css里的BFC用法

BFC(Block Formatting Contexts),能够把BFC理解为一个封闭的大箱子,容器里面的子元素不会影响到外面的元素。css

规则bash

1.内部的盒子会在垂直方向,一个个地放置。flex

2.BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素ui

3.属于同一个BFC的两个相邻BOx的上下margin会发生重叠spa

4.计算BFC的高度时,浮动元素也参与计算code

5.每一个元素的左边,与包含的盒子的左边相接触,即便存在浮动也是如此;orm

6.BFC的区域不会与float重叠;cdn

###哪些元素会触发BFC###blog

1.body根元素博客

2.浮动元素:float不为none的属性值;

3.绝对定位元素:position(absolute、fixed)

4.display为:inline-block、table-cell、flex

5.overflow除了visible之外的值(hidden、auto、scroll)

BFC的应用

1.解决margin重叠问题

2.解决浮动高度塌陷问题

3.解决侵占浮动元素的问题

例:

1.margin重叠问题

咱们先定义两个垂直的div

<div class="box"></div>
    <div class="box"></div>
复制代码

css

.box{
            width: 200px;
            height: 50px;
            margin: 30px 0;
            background: black;
        }
复制代码

margin重叠后的效果

这知足规则第三条: 属于同一个BFC的两个相邻BOx的上下margin会发生重叠 说明二者属于同一个BFC,因此咱们将两个div放到不一样的BFC中,为第二个div套上一个父元素,而后经过设置overflow hidden来激活BFC

<div class="box"></div>

    <div class="content">
        <div class="box"></div>
    </div>

复制代码

css

.content{
            overflow: hidden;
        }
    
复制代码

效果图为:

**再来看看浮动高度塌陷问题 **

<div class="content">
        <div class="box"></div>
    </div>
    
复制代码

css

.content{
            width:300px; 
            border:1px solid black; 
        }

        .content .box{
            width:100px;
            height:100px;
            border:1px solid red;   
            float:left;
        }
    
复制代码

效果图为:

可以看到父元素没有被撑开,BFC规则第四条: 计算BFC的高度时,浮动元素也参与计算 因此咱们要将父元素触发BFC

.content{
            width:300px; 
            border:1px solid black; 

            overflow: hidden;
        }
复制代码

效果图为:

能都看到父元素已经撑开了。

再来看看侵占浮动元素的问题

先定义两个div:

<div class="left"></div>
    <div class="right"></div>
复制代码

css

.left{
            width: 100px;
            height: 100px;
            background: salmon;

            float: left;
        }

        .right{
            width: 300px;
            height: 200px;
            background: black;
        }
    
复制代码

效果图为:

知足了规则第五点: 每一个元素的左边,与包含的盒子的左边相接触,即便存在浮动也是如此

因此咱们要将红色区域撑到黑色区域的左边,就需利用规则第六条 BFC的区域不会与float重叠 咱们给黑色区域right设置一个 overflow: hidden; 属性来触发BFC;

.right{
            width: 300px;
            height: 200px;
            background: black;


            overflow: hidden;
        }
    
复制代码

效果图为:

可以看到红色区域已经撑到黑色区域的左边


若是,您认为阅读这篇博客让你有些收获,请您关注一下。感谢您的支持,若有不足,请多指教。

联系方式:

wx:bsl521921

相关文章
相关标签/搜索