使用CSS保持div的长宽比

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

是否有任何CSS3规则可以允许高度根据宽度而改变,同时保持其长宽比?

我知道我可以通过JavaScript来做到这一点,但我宁愿只使用CSS。

回答:

只需<div>使用百分比值创建包装器padding-bottom,如下所示:

div {

width: 100%;

padding-bottom: 75%;

background: gold; /** <-- For the demo **/

}

/* demonstration purposed only : non-essential */

.demoWrapper {

padding: 10px;

background: white;

box-sizing: border-box;

resize: horizontal;

border: 1px dashed;

overflow: auto;

max-width: 100%;

height: calc(100vh - 16px);

}

<div class="demoWrapper">

<div></div>

</div>

它将导致<div>高度等于其容器宽度的75%(长宽比为4:3)。

这取决于以下事实:

相对于生成的盒子的包含块的宽度计算百分比(来源:w3.org,强调我的)

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

aspect ratio  | padding-bottom value

--------------|----------------------

16:9 | 56.25%

4:3 | 75%

3:2 | 66.66%

8:5 | 62.5%

将内容放在div中:

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

div.stretchy-wrapper {

position: relative;

}

div.stretchy-wrapper > div {

position: absolute;

top: 0; bottom: 0; left: 0; right: 0;

}

以上是 使用CSS保持div的长宽比 的全部内容, 来源链接: utcz.com/qa/434131.html

回到顶部