CSS 弹性布局(flex)的height计算

本文通过测试案例探讨了弹性布局中父元素与子元素高度如何相互作用,特别是当子元素设置为100%高度时,父元素如何计算其自身高度以适配子元素,并解释了display:flex属性的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

疑惑现象:

弹性布局父元素的height=所有子元素的元素高度,而子元素又能继承父元素高度(height:100%)。

可能过程:

先使用子元素总高度撑起父元素高度,子元素再继承父元素高度。

测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body style="border: 2px solid black;box-sizing: border-box;">
<div style="border:2px solid red;display: flex;">
    <div style="height: auto;">
        <div style="height: 100%;border: 5px solid yellow;box-sizing: border-box;">
            <h1>1</h1>
            <input>
            <input>
            <input>
            <input>
        </div>
        <div style="height: 100%;border: 5px solid green;box-sizing: border-box;">
            <h1>2</h1>
            <input>
            <input>
            <input>
            <input>
        </div>
    </div>
</div>
</body>
</html>

在这里插入图片描述

博文引用-启发:

由多次测试我猜测是首次渲染之后,父元素未设置高度,子元素即使设置height:100%;
获取不到父元素高度,高度由子元素的内容决定。
而dispaly:flex;弹性布局会动态计算元素的高度,在确定最大的元素高度之后,相当于父元素高度确定,再由于height: auto;的存在由浏览器计算出其他子元素的高度,最终使得各个子元素高度统一。

其他:

有明白具体过程的嘛?欢迎留言指教。

相关参考:
CSS height 及 flex布局一则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值