使用CSS flex box模型,如何强制图像保持其纵横比?
JS小提琴:http://jsfiddle.net/xLc2Le0k/2/
请注意,为了填充容器的宽度,图像会拉伸或收缩。这很好,但是我们也能让它拉伸或收缩高度来保持图像比例吗?
HTML
<div class="slider">
<img src="http://www.placebacon.net/400/300" alt="Bacn">
<img src="http://www.placebacon.net/400/300" alt="Bacn">
<img src="http://www.placebacon.net/400/300" alt="Bacn">
<img src="http://www.placebacon.net/400/300" alt="Bacn">
</div>
CSS
.slider {
display: flex;
}
.slider img {
margin: 0 5px;
}
无需添加包含div的文件。
css“对齐项”属性的默认值是“拉伸”,这是导致图像被拉伸到其全部原始高度的原因。将css"拟订项目"属性设置为"flex-start"可修复问题。
.slider {
display: flex;
align-items: flex-start; /* ADD THIS! */
}
对于img标记,如果您定义一面,则另一面的大小将调整为保持纵横比,默认情况下,图像将扩展到其原始大小。
使用这个事实,如果您将每个img标记包装成div标记,并将其宽度设置为父div的100%,那么高度将根据您想要的纵横比。
http://jsfiddle.net/0o5tpbxg/
* {
margin: 0;
padding: 0;
}
.slider {
display: flex;
}
.slider .slide img {
width: 100%;
}
为了防止图像在flex父对象中的任一轴上拉伸,我找到了两种解决方案。
您可以尝试在图像上使用对象拟合,例如。
object-fit: contain;
http://jsfiddle.net/ykw3sfjd/
或者您可以添加灵活的规则,这在某些情况下可能会更好。
align-self: center;
flex: 0 0 auto;
问题内容: 使用CSS flex box模型,如何强制图像保持其纵横比? JS小提琴:http://jsfiddle.net/xLc2Le0k/2/ 请注意,图像会拉伸或收缩以填充容器的宽度。很好,但是我们也可以拉伸或缩小 高度 以保持图像比例吗? 的HTML 的CSS 问题答案: 对于img标签,如果您定义一侧,那么将调整另一侧的大小以保持纵横比,并且默认情况下,图像会扩展到其原始大小。 使用此
我在响应式站点上设置了flexSlider。我正在创建的滑块可以拍摄横向和纵向图像。我设置了,以便调整高度以适应图像。 在最大的媒体查询中,flexslider容器的宽度为750px。这对于横向图像很好,但纵向图像太大了。肖像图像的宽度设置为与容器相同的大小-750px宽,因此高度至少是容器宽度的两倍,因此如果不滚动,则无法查看整个图像。 在css中,我尝试设置最大高度:750px,这解决了高度问
我有一个javafx GridPane,当我调整阶段大小时,它会调整自己的大小以适应阶段的大小。我希望gridpane的高度与gridpane的宽度相匹配,并因此将大小调整为尽可能大的大小,同时保持这种约束。 我不得不在GridPane的父级中添加更多的元素。我发现添加的元素完全没有正常的行为,并且相互重叠。 当然,当我移除重写方法时,它们不再重叠,但当我调整舞台大小时,网格窗格并没有保持一个完美
我在较小的设备宽度上遇到问题,其中div变得更加方形,景观也更少。div的背景图像设置为,因此它只占用div顶部60%的高度和100%的宽度。 如何将背景图像设置为覆盖div高度的100%,但保持其纵横比,以便部分背景图像被切断。 如何对齐背景图像,使其右侧位于div的右侧(因此背景图像的左侧将被div的左侧截断)。
编辑:我应该提到的是,我知道纵横比公式:原始高度/原始宽度x新宽度=新高度,但是,我不知道如何正确地使用它,以我的优势。
我有一个宽度为1900和高度为1000的图像,我使用的是和但我希望div高度与图像更改的高度相同。 示例: 在1366个屏幕中,图像将缩小尺寸以适应屏幕大小(宽度100%),因此,图像高度也将减小,因此我想获得该高度。 我试图做的是: HTML: CSS: 问题:vw是用滚动条宽度计算的,我想要没有,我可以使用宽度%而不是vw吗? 我接受别人的想法来做这件事,但我更喜欢使用CSS。