使用CSS保持div的纵横比

我想创建一个div,它可以随着窗口宽度的变化而改变宽度/高度

是否有任何CSS3规则允许高度根据宽度改变,同时保持其纵横比

我知道我可以通过JavaScript实现这一点,但我更喜欢只使用CSS

只需创建一个包装器<部门&gt带有一个百分比值,用于填充底部,如下所示:

.demoWrapper{
填充:10px;
背景:白色;
框大小:边框框;
调整大小:水平;
边框:1px虚线;
溢出:自动;
最大宽度:100%;
高度:计算(100vh-16px);
}
div{
宽度:100%;
垫底:75%;
背景:gold;/**<--用于演示**/
}
<div class=“demoWrapper”>
<部门&gt&lt/部门>
&lt/部门&gt

它将导致一个<部门&gt高度等于容器宽度的75%(长宽比为4:3)

这取决于以下事实:对于填充:

百分比是根据生成的框的包含块[…]的宽度计算的(来源:w3.org,emphasis mine)

填充其他纵横比和100%宽度的底部值:

纵横比|填充底部值
--------------|----------------------
16:9      |       56.25%
4:3       |       75%
3:2       |       66.66%
8:5       |       62.5%

将内容放入div:

为了保持div的纵横比并防止其内容拉伸它,您需要添加一个绝对定位的子对象,并使用以下方法将其拉伸到包装的边缘:

div.stretchy-wrapper{
位置:相对位置;
}
分区弹性包装>div{
位置:绝对位置;
顶部:0;底部:0;左侧:0;右侧:0;
}

这里有一个演示和另一个更深入的演示

发表评论