css - 清除浮动和BFC的区别

查看:137
本文介绍了css - 清除浮动和BFC的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

使用清除浮动技术使父级元素高度计算时包括了内部浮动元素的高度,这种方式和通过触发BFC来包含内部浮动元素有什么区别?
附上Demo

<!DOCTYPE html>
<html>
<head>
    <title>BFC</title>
    <style type="text/css">
        div {
            border: 1px solid black;
            background: #ccc;
        }
        .red {
            background: red;
        }
        .blue {
            background: blue;
        }
        .box {
            width: 100px;
            height: 100px;
        }
        .big {
            width: 200px;
            height: 200px;
        }
        .left {
            float :left;
        }
        .right {
            float: right;
        }

        /*关键代码*/
        .bfc {
            overflow: hidden;
        }
        .clearfix:after {
            content: "";
            display: block;
            clear: both;
        }
    </style>
</head>
<body>
<div class="box big right red"></div>
<div class="bfc">
    <div class="box blue left"></div>
    <div class="box blue left"></div>
    <div class="box blue left"></div>
</div>
</body>
</html>

当使用.clearfix时

当使用.bfc时

这时红色box和左边的灰色容器是两个独立的bfc 这个我比较好理解。
第一种情况下灰色容器并没有触发bfc,而灰色的容器在尾部添加了一个清除浮动伪元素后,将自身外的红色box元素高度计算在内,导致这一计算结果的原因我的理解是
这个伪元素的位置偏移导致父元素在自身计算高度时不得不将这个位置信息计算在内
这个理解是否正确?

解决方案

当换成:before以后 蓝色box不会计入灰色容器的高度计算中,所以我得出的结论是伪元素的位置偏移导致灰色容器高度的计算

这篇关于css - 清除浮动和BFC的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆