我正在处理图像,我遇到了纵横比问题。
<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。如何设置图像的大小,同时保持其纵横比。
当前回答
https://jsfiddle.net/sot2qgj6/3/
如果你想用固定的宽度百分比,而不是固定的宽度像素来放置图像,这就是答案。
这在处理不同大小的屏幕时很有用。
诀窍是
使用padding top设置高度与宽度之间的距离。使用position:absolute将图像放入填充空间。使用最大高度和最大宽度确保图像不会覆盖父元素。使用display:block和margin:auto将图像居中。
我也评论了小提琴中的大部分技巧。
我还找到了其他方法来实现这一点。在html中不会有真实的图像,所以当我需要html中的“img”元素时,我个人更倾向于首选答案。
使用背景的简单csshttp://jsfiddle.net/4660s79h/2/
顶部有单词的背景图像http://jsfiddle.net/4660s79h/1/
使用位置绝对值的概念如下http://www.w3schools.com/howto/howto_css_aspect_ratio.asp
其他回答
将图像容器标记的CSS类设置为图像类:
<div class="image-full"></div>
并将其添加到CSS样式表中。
.image-full {
background: url(...some image...) no-repeat;
background-size: cover;
background-position: center center;
}
使用伪元素进行垂直对齐怎么样?这更少的代码用于旋转木马,但我想它适用于每个固定大小的容器。它将保持纵横比,并在顶部/底部或左侧/写入最短尺寸时插入@灰色暗条。同时,图像通过文本对齐水平居中,通过伪元素垂直居中。
> 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;
}
}
只需将高度属性替换为纵横比属性。
国际货币基金组织{最大宽度:500px;纵横比:900/600;}<img src=“big_image.png”width=“900”/>
纵横比属性不是必需的,但可以防止图像布局偏移。
下面的解决方案将允许图像的放大和缩小,具体取决于父框的宽度。
所有图像都有一个固定宽度的父容器,仅用于演示。在生产中,这将是父框的宽度。
最佳实践(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%。
如果应用程序可以具有任何纵横比或分辨率的图像,则可以像此链接中那样管理高度和宽度。
这使用Javascript和HTML
https://stackoverflow.com/a/65090175/13338731