CSS父元素高度自适应,子元素height100%,子元素加定位后100%为什么会生效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        .father {
            margin: 100px;
            width: 300px;
            background-color: red;
            position: relative;
        }
        .son1 {
            width: 100px;
            height: 200px;
            background-color: pink;
        }
        .son2 {
            width: 100px;
            height: 100%;
            background-color: yellow;
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>        
    </div>
</body>
</html>

父元素高度自适应,父元素高度由son1撑开,高度为200px。
son2的高度是100%,如果不加“绝对定位”,那么height100%是无效的,加了之后是有效的。
有大佬帮忙解下疑惑吗(为什么子元素加了position:absolute,子元素height100%就生效),谢谢!

阅读 4.4k
2 个回答

加了绝对定位后,元素脱离文档流,父元素的高度会完全由son1撑起,这时候son1和父元素高度是可以确定的,再来计算son2的高度是可以计算的。而不脱离文档流,父元素由son1和son2撑起,son2高度和父元素都需要相互计算,算不出来

子元素添加 left:0; right:0; top:0;bottom:0; 就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题