如何使用HTML IMG标记保持宽高比

sun*_*mar 115 html css

我正在使用HTML的img标签在我们的应用程序中显示照片.我已将其height和width属性设置为64.我需要将任何图像分辨率(例如256x256,1024x768,500x400,205x246等)显示为64x64.但是通过将img标签的高度和宽度属性设置为64,它不会保持纵横比,因此图像看起来很扭曲.

供您参考我的确切代码是:

<img src="Runtime Path to photo" border="1" height="64" width="64">
Run Code Online (Sandbox Code Playgroud)

Tur*_*nip 119

不要设置高度和宽度.使用其中一个,将保持正确的宽高比.

.widthSet {
    max-width: 64px;
}

.heightSet {
    max-height: 64px;
}
Run Code Online (Sandbox Code Playgroud)
<img src="http://placehold.it/200x250" />

<img src="http://placehold.it/200x250" width="64" />

<img src="http://placehold.it/200x250" height="64" />

<img src="http://placehold.it/200x250" class="widthSet" />

<img src="http://placehold.it/200x250" class="heightSet" />
Run Code Online (Sandbox Code Playgroud)

  • ...但是,如果你想要修复高度和宽度怎么办? (13认同)
  • 这对于动态应用程序没有任何意义.目前尚不清楚宽度或高度是否为64px,因为它取决于图像的比例.为什么这是受欢迎的回应? (5认同)
  • @Mär 这个问题是关于固定宽度和/或高度图像。反应能力不是问题的要求。 (3认同)
  • 尺寸是固定的,纵横比不是,因为问题具体是*任何**任何*分辨率的图像.包括小于64x64的分辨率. (2认同)

AKH*_*L P 56

这是样本之一

div{
   width: 200px;
   height:200px;
   border:solid
 }

img{
    width: 100%;
    height: 100%;
    object-fit: contain;
    }
Run Code Online (Sandbox Code Playgroud)
<div>
  <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png">
</div>
Run Code Online (Sandbox Code Playgroud)

  • 只是想要使用此解决方案的人的注意事项:浏览器不支持对象适合.IE或Edge根本不支持它.资料来源:http://caniuse.com/#feat=object-fit (6认同)
  • 现在支持 Edge 16+,请参阅表:https://www.w3schools.com/css/css3_object-fit.asp (3认同)

Ily*_*syn 40

设置widthheight图像auto,但限制max-widthmax-height:

img {
    max-width:64px;
    max-height:64px;
    width:auto;
    height:auto;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

如果要在64x64px"frames"中显示任意大小的图像,可以使用内联块包装器和定位它们,就像在这个小提琴中一样.

  • 不会超过原始尺寸,只会低于原始尺寸。 (3认同)

小智 37

<img src="Runtime Path to photo"
     style="border: 1px solid #000; max-width:64px; max-height:64px;">
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的解决方案,因为它继续独立于图像的方向.3rror404的解决方案要求您知道图像是否比高图像宽,反之亦然. (2认同)
  • 还将`width`和`height`设置为`auto`. (2认同)

Ale*_*lin 22

有一个新的 CSS 属性aspect-ratio。它为框设置首选纵横比,该纵横比将用于计算自动尺寸和其他一些布局功能。

img {
  width: 100%;
  aspect-ratio: 16/9;
}
Run Code Online (Sandbox Code Playgroud)

所有流行的浏览器都支持它。
MDN 链接:https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio
并且https://web.dev/aspect-ratio/包含使用此属性的好示例

  • 这就是我来寻找的。祝福现代CSS! (2认同)

Ank*_*rma 19

object-fit: contain在 html 元素的 css 中使用img

前任:

img {
    ...
    object-fit: contain
    ...
}
Run Code Online (Sandbox Code Playgroud)


小智 10

列出的方法都没有将图像缩放到适合框的最大可能尺寸,同时保持所需的宽高比.

这不能用IMG标签完成(至少没有一点JavaScript),但可以按如下方式完成:

 <div style="background:center no-repeat url(...);background-size:contain;width:...;height:..."></div>
Run Code Online (Sandbox Code Playgroud)

  • 是.使用`style ="background:url('_'); background-size:封面宽度:_px height:_px"`用于`<img>`标签. (2认同)
  • 谢谢@UjjwalSingh。确实,为了使图像尺寸最大可能最大化,我们需要“覆盖”而不是“包含”。`contain`导致“ letterboxing”。 (2认同)

Kon*_*nev 6

将图像包裹在div尺寸为 64x64 的 a 中并设置width: inherit为图像:

<div style="width: 64px; height: 64px;">
    <img src="Runtime path" style="width: inherit" />
</div>
Run Code Online (Sandbox Code Playgroud)