CSS强制调整图像大小并保持纵横比
我正在处理图像,遇到了纵横比的问题CSS强制调整图像大小并保持纵横比,css,image,aspect-ratio,Css,Image,Aspect Ratio,我正在处理图像,遇到了纵横比的问题 <img src="big_image.jpg" width="900" height="600" alt="" /> 但是对于big\u image.jpg,我收到width=500和height=600。如何将图像设置为重新调整大小,同时保持其纵横比。删除“高度”属性 <img src="big_image.jpg" width="900" height="600" alt="" /> <img src="big_imag
<img src="big_image.jpg" width="900" height="600" alt="" />
但是对于big\u image.jpg
,我收到width=500
和height=600
。如何将图像设置为重新调整大小,同时保持其纵横比。删除“高度”属性
<img src="big_image.jpg" width="900" height="600" alt="" />
<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;"/>
(2019-12-03)和(2019-12-10)支持将IMG
元素的宽度和高度HTML属性内部添加到新的CSS属性(该属性本身尚不可直接使用)
计算的纵横比用于为图像保留空间,直到图像加载为止,并且只要计算的纵横比等于图像的实际纵横比,则在加载图像后防止页面“跳转”
要使其工作,必须通过CSS将两个图像维度之一覆盖为auto
值:
IMG {max-width: 100%; height: auto; }
在该示例中,即使图像尚未加载,并且由于最大宽度:100%
,有效图像宽度小于1280,纵横比仍保持在16:9(1280:720)
另请参阅相关的Firefox。背景大小属性仅为ie>=9,但如果您觉得合适,可以使用带有背景图像的div,并设置背景大小:contain
:
div.image{
background-image: url("your/url/here");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
现在,您可以将您的div大小设置为您想要的任何大小,并且图像不仅将保持其纵横比,它还将在div中垂直和水平集中。只是不要忘记在css上设置大小,因为div在标记本身上没有width/height属性
此方法不同于setecs answer,使用此方法,图像区域将保持不变并由您定义(根据div大小和图像纵横比,在水平或垂直方向留下空白),而setecs answer将为您提供一个与缩放图像大小完全相同的框(无空白)
编辑:
根据,您可以使用专有过滤器声明模拟IE8中的背景大小属性:
尽管Internet Explorer 8不支持“背景大小”属性,但可以使用非标准的-ms filter函数模拟其某些功能:
img{
显示:块;
最大宽度:230px;
最大高度:95px;
宽度:自动;
高度:自动;
}
此图像最初为400x400像素,但应通过CSS调整大小:
根据父框的宽度,下面的解决方案将允许图像的放大和缩小
所有图像都有一个固定宽度的父容器,仅用于演示。在生产中,这将是父框的宽度
最佳实践(2018年):
此解决方案告诉浏览器以最大可用宽度渲染图像,并将高度调整为该宽度的百分比
.parent{
宽度:100px;
}
img{
显示:块;
宽度:100%;
高度:自动;
}
此图像最初为400x400像素,但应通过CSS调整大小:
将图像容器标记的CSS类设置为图像类
:
<div class="image-full"></div>
这将使图像缩小,如果它太大的指定区域(作为缺点,它不会放大图像)
setec的解决方案适用于自动模式下的“收缩到适合”。
但是,要以最佳方式扩展以适应“自动”模式,您需要首先将接收到的图像放入临时id中,
检查它是否可以在高度或宽度上扩展(取决于其纵横比v/s显示块的纵横比)
当接收到的图像小于显示框时,此方法非常有用。您必须将它们以原始的小尺寸保存在服务器上,而不是以扩展版本保存,以填充更大的显示框,从而节省大小和带宽。您可以创建如下div:
<div class="image" style="background-image:url('/to/your/image')"></div>
只需将其添加到css中,它将自动收缩和扩展,并保持原始比率
img {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
img{
最大宽度:80px;/*也适用于百分比值,如100%*/
高度:自动;
}
此图像最初为400x400像素,但应通过CSS调整大小:
假设HTML的作者故意想要
高度为宽度值的一半,
此CSS将忽略HTML作者的愿望,这可能是您想要的,也可能不是您想要的:
要在保持图像响应的同时仍强制图像具有一定的纵横比,可以执行以下操作:
HTML:
无论作者上传的图像大小如何,这都可以用来强制执行特定的纵横比
感谢@Kseso at。查看此URL以了解更多比率和工作示例。您可以使用此URL:
img {
width: 500px;
height: 600px;
object-fit: contain;
position: relative;
top: 50%;
transform: translateY(-50%);
}
我一直在努力解决这个问题,最终得出了一个简单的解决方案:
object-fit: cover;
width: 100%;
height: 250px;
您可以根据需要调整宽度和高度,对象适合属性将为您进行裁剪
有关对象拟合
属性的可能值和兼容性表的更多信息,请参见:
干杯。要强制使图像符合精确大小,您不需要编写太多代码。很简单
img{
宽度:200px;
高度:自动;
对象匹配:在图像大小中包含;/*匹配徽标*/
-o-object-fit:包含;/*适用于opera浏览器的徽标*/
对象位置:顶部;/*设置徽标位置*/
-o-对象位置:顶部;/*opera浏览器的徽标位置*/
}
如果您想将图像的宽度百分比固定,但宽度像素不固定,则答案如下
这将在以下情况下非常有用:
<div class="image" style="background-image:url('/to/your/image')"></div>
height: 100%;
width: 100%;
background-position: center center;
background-repeat: no-repeat;
background-size: contain; // this can also be cover
img {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
<div class="ratio2-1">
<img src="../image.png" alt="image">
</div>
.ratio2-1 {
overflow: hidden;
position: relative;
&:before {
content: '';
display: block;
padding-top: 50%; // ratio 2:1
}
img {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
}
img {
width: 500px;
height: 600px;
object-fit: contain;
position: relative;
top: 50%;
transform: translateY(-50%);
}
object-fit: cover;
width: 100%;
height: 250px;
> li {
float: left;
overflow: hidden;
background-color: @gray-dark;
text-align: center;
> a img,
> img {
display: inline-block;
max-height: 100%;
max-width: 100%;
width: auto;
height: auto;
margin: auto;
text-align: center;
}
// Add pseudo element for vertical alignment of inline (img)
&:before {
content: "";
height: 100%;
display: inline-block;
vertical-align: middle;
}
}
.img {
object-fit: contain;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
img[data-attribute] {height: 100vh;}
img{
display: block;
width: 12vw;
height:12vw;
max-width:100%;
min-width:100px;
min-height:100px;
object-fit:contain;
}
img {
width: 100%;
height: auto;
object-fit: cover;
}
<img src='/nic-cage.png' style={{ maxWidth: '50%', objectFit: 'scale-down' }} />