我正在处理图像,我遇到了纵横比问题。
<img src="big_image.jpg" width="900" height="600" alt="" />
如您所见,高度和宽度已经指定。我为图像添加了CSS规则:
img {
max-width: 500px;
}
但对于big_image.jpg,我得到的宽度=500,高度=600。如何设置图像的大小,同时保持其纵横比。
我正在处理图像,我遇到了纵横比问题。
<img src="big_image.jpg" width="900" height="600" alt="" />
如您所见,高度和宽度已经指定。我为图像添加了CSS规则:
img {
max-width: 500px;
}
但对于big_image.jpg,我得到的宽度=500,高度=600。如何设置图像的大小,同时保持其纵横比。
当前回答
只需将高度属性替换为纵横比属性。
国际货币基金组织{最大宽度:500px;纵横比:900/600;}<img src=“big_image.png”width=“900”/>
纵横比属性不是必需的,但可以防止图像布局偏移。
其他回答
这里有一个解决方案:
object-fit: cover;
width: 100%;
height: 250px;
您可以调整宽度和高度以满足您的需要,对象拟合属性将为您进行裁剪。
有关对象拟合属性和兼容性表的可能值的更多信息,请参见:https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
只需将此添加到css中,它将自动收缩和扩展,并保持原始比例。
img {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
您可以创建如下div:
<div class="image" style="background-image:url('/to/your/image')"></div>
并使用此css设置其样式:
height: 100%;
width: 100%;
background-position: center center;
background-repeat: no-repeat;
background-size: contain; // this can also be cover
Firefox 71+(2019-12-03)和Chrome 79+(2019-2-10)支持将IMG元素的宽度和高度HTML属性内部映射到新的纵横比CSS属性(该属性本身还不能直接使用)。
计算出的纵横比用于在加载图像之前为图像预留空间,只要计算出的宽高比等于图像的实际纵横比,就可以在加载图像后防止页面“跳转”。
要使其工作,必须通过CSS将两个图像维度之一覆盖为自动值:
IMG {max-width: 100%; height: auto; }
<img src="example.png" width="1280" height="720" alt="Example" />
在该示例中,即使图像尚未加载,并且作为最大宽度:100%的结果,有效图像宽度小于1280,也保持16:9(1280:720)的纵横比。
另请参阅相关的Firefox错误392261。
我建议对于响应式方法,最佳做法是使用视口单位和最小/最大属性,如下所示:
img{
display: block;
width: 12vw;
height:12vw;
max-width:100%;
min-width:100px;
min-height:100px;
object-fit:contain;
}