我正在处理图像,我遇到了纵横比问题。

<img src="big_image.jpg" width="900" height="600" alt="" />

如您所见,高度和宽度已经指定。我为图像添加了CSS规则:

img {
  max-width: 500px;
}

但对于big_image.jpg,我得到的宽度=500,高度=600。如何设置图像的大小,同时保持其纵横比。


当前回答

您可以使用:-

transform: scaleX(1.2);

以改变宽度而不改变高度。

And

transform: scaleY(1.2);

更改高度而不更改宽度

您可以在html和css中的图像和视频标记上使用此选项。这也不会改变纵横比。

其他回答

您可以使用此选项:

img { 
    width: 500px; 
    height: 600px; 
    object-fit: contain; 
    position: relative; 
    top: 50%; 
    transform: translateY(-50%); 
}

如果应用程序可以具有任何纵横比或分辨率的图像,则可以像此链接中那样管理高度和宽度。

这使用Javascript和HTML

https://stackoverflow.com/a/65090175/13338731

这里有一个解决方案:

img {
   width: 100%;
   height: auto;
   object-fit: cover;
}

这将确保图像始终覆盖整个父对象(向下和向上缩放)并保持相同的纵横比。

下面的解决方案将允许图像的放大和缩小,具体取决于父框的宽度。

所有图像都有一个固定宽度的父容器,仅用于演示。在生产中,这将是父框的宽度。

最佳实践(2018):

此解决方案告诉浏览器以最大可用宽度渲染图像,并以该宽度的百分比调整高度。

.父级{宽度:100px;}国际货币基金组织{显示:块;宽度:100%;高度:自动;}<p>此图像最初为400x400像素,但应通过CSS调整大小:</p><div class=“parent”><img width=“400”height=“400”src=“https://placehold.it/400x400"></div>

更新颖的解决方案:

使用更高级的解决方案,无论图像大小如何,您都可以裁剪图像,并添加背景色来补偿裁剪。

.父级{宽度:100px;}.容器{显示:块;宽度:100%;高度:自动;位置:相对;溢出:隐藏;填充:34.37%0 0;/*34.37%=100/(w/w)=100/*/}.容器img{显示:块;最大宽度:100%;最大高度:100%;位置:绝对;顶部:0;底部:0;左:0;右:0;}<p>此图像最初为640x220,但应通过CSS调整大小:</p><div class=“parent”><div class=“container”><img width=“640”height=“220”src=“https://placehold.it/640x220"></div></div>

对于指定填充的行,需要计算图像的纵横比,例如:

640px (w) = 100%
220px (h) = ?

640/220 = 2.909
100/2.909 = 34.37%

因此,顶部填充=34.37%。

删除“height”属性。

<img src="big_image.jpg" width="900" alt=""/>

通过指定这两个选项,可以更改图像的纵横比。只需设置一个即可调整大小,但保持纵横比。

(可选)限制过大:

<img src="big_image.jpg" width="900" alt="" style="max-width:500px; height:auto; max-height:600px;"/>