<CSS>问题:伪元素选择器清除浮动使得父元素有高度的问题

刚刚学习CSS中清除浮动的这一块知识点,利用伪元素选择器可以清除浮动,示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS清除浮动四</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box1 {
            background-color: greenyellow;
        }

        .box2 {
            background-color: indianred;
        }

        .box1 p {
            width: 100px;
            background-color: pink;
            float: left;
        }

        .box2 p {
            width: 100px;
            background-color: deepskyblue;
            float: left;
        }

        .box1::after{
            content: '';
            display: block;
            clear: both;
            height: 0;
            visibility: hidden;
        }

    </style>
</head>
<body>
<div class="box1">
    <p>我是文字啊1</p>
    <p>我是文字啊1</p>
    <p>我是文字啊1</p>
    <p>我是文字啊1</p>
    <p>我是文字啊1</p>
</div>
<div class="box2">
    <p>我是文字啊2</p>
    <p>我是文字啊2</p>
    <p>我是文字啊2</p>
    <p>我是文字啊2</p>
    <p>我是文字啊2</p>
</div>
</body>
</html>
示例图片

在显示的结果中,可以发现,父元素div(.box1)的高度是21px(通过谷歌的开发者工具可得,图中右侧红色箭头所指),有淡绿色的背景,这就让我有点不解。

在之前学习浮动的时候,浮动元素会脱离标准流,使得父元素的高度为0,加上了伪元素选择器添加的内容,这个伪元素选择器添加的内容似乎应该在父元素的左上角,浮动元素会盖住它才对。后来经过自己的思考和分析,觉得可能是如下原因导致的:

1、浮动元素的字围现象:
伪元素选择器添加的内容(块级),清除浮动之后,会在浮动元素的下方,而不是被浮动元素盖住的原因,可能是字围现象导致的,字围现象也就是没有浮动的元素中的内容会自动给浮动的元素让出位置,即浮动元素会在父元素中占一定的空间,而不会盖住没有浮动的元素的内容。
其实可以通过删除伪元素选择器中添加的content属性来观察一下,去除content属性之后,清除浮动的效果就消失了。

是否真的是此种原因导致的,只是我的猜测而已,如果有朋友知道其中的原理,还请多多指正,非常感谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容