ccs中的BFC理解

BFC(block formatting context)块级格式化上下文,是Web页面盒模型布局的CSS渲染模式,是一个独立的渲染区域或者可以认为是一个独立容器。该容器中的子元素不会影响容器外的元素,反之外部元素也不会影响容器内的元素。其中包括浮动和外边距(margin)合并等。BFC特性能杜绝布局中的意外情况发生。

形成BFC的条件

1.浮动元素:float属性值除none以外的元素。

2.定位元素:position属性值为( absolute 或是 fixed )的元素。

3.dispaly属性值为(inline-block、table-cell、table-caption、flex、inline-flex)其中任意一个值的元素。

4.overflow属性值除visible以外的元素。(hidden、auto、scroll).。

BFC的特性

1.内部盒子会在垂直方向上一个接一个的放置。

2.垂直方向上的距离由margin决定,属于同一个BFC盒子的margin会重叠。

3.在BFC盒子中,每个盒子的左边缘会触碰父容器的左边缘,即在没有margin和padding值时,父border内边与子border外边

重叠。

4.BFC盒子不会与浮动盒子产生交集,而是紧贴浮动元素边缘。

5.如果父容器没有设置高度,但子盒子中存在浮动元素,那么在计算bfc的高度时,会计算上浮动盒子的高度。

6.BFC是一个独立的容器,容器内的元素不会影响外部元素,同样外部元素也不会影响容器内元素。

BFC实例

(1)BFC中的盒子对齐

特性的第一条是:内部的Box会在垂直方向上一个接一个的放置。

浮动的元素也是这样,box3浮动,他依然接着上一个盒子垂直排列。并且所有的盒子都左对齐。

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>BFC中的盒子对齐</title>
</head>
<body>
    <div class="content">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div class="box4"></div>
    </div>
</body>
</html>

css:

div{
    height: 20px;
}
.content{
    position:absolute; /* 创建一个BFC环境 */
    background:#eee;
    height:auto;
}
.box1{
    width:400px;
    background-color:red;
}
.box2{
    width:300px;
    background-color:blue;
}
.box3{
    width:100px;
    background-color:green;
    float:left;       /* box3为浮动元素 */
}
.box4{
    width:200px;
    background-color:yellow;
    height:40px;
}

(2)外边距折叠

特性的第二条:垂直方向上的距离由margin决定

在常规文档流中,两个兄弟盒子之间的垂直距离是由他们的外边距所决定的,但不是他们的两个外边距之和,而是以较大的为准。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>外边距折叠</title>
    <style>
         .container {
            overflow: hidden;
            width: 500px;
            height: 500px;
            background-color: red;
        }
        .wrapping{
            overflow:hidden;
        }
        .box1 {
            height: 100px;
            margin: 50px 0;
            background-color: green;
        }
        
        .box2 {
            height: 100px;
            margin: 100px 0;
            background-color: green;
        }
    </style>
</head>
<body>
    <p>1.常规文件流中,兄弟盒子之间的垂直距离用margin决定,且取最大值而不是求和</p>
    <div class="container">
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
    <p>2.额外增加一个BCF</p>
    <div class="container">
        <div class="wrapping">
            <div class="box1"></div>
        </div>
        <div class="box2"></div>
    </div>
</body>
</html>

(3)不被浮动元素覆盖 

以常见的两栏布局为例。

左边固定宽度,右边不设宽,因此右边的宽度自适应,随浏览器窗口大小的变化而变化。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>不被浮动元素覆盖</title>
    <style>
    .column:nth-of-type(1) {
        float: left;
        width: 200px;
        height: 100px;
        margin-right: 10px;
        background-color: red;
    }
    
    .column:nth-of-type(2) {
        overflow: hidden;/*创建bfc */
        height: 300px;
        background-color: purple;
    }
</style>
</head>
<body>
    <div class="column"></div>
    <div class="column"></div>
</body>
</html>

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
在春招的哈士奇很苦闷:这个社会求职终于颠成了我不认识的样子
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务