首页 > 其他分享 >清除浮动前序--BFC(Box Formatting Context)

清除浮动前序--BFC(Box Formatting Context)

时间:2022-10-03 17:46:22浏览次数:56  
标签:Box BFC -- 前序 width rgb 浮动 hidden overflow

BFC规范

BFC (Box Formatting Context ,块级格式上下文)是页面上的一个隔离的独立容器

一个盒子如果不设置高度,当子元素浮动时,无法撑起自身,就会造成父元素高度塌陷,原因是这个盒子没有形成 BFC

创建BFC

1.float 的值不是 none

该方法可以实现效果,但没有意义,不能随便给盒子设置浮动

2.position 的值不是 static 或者 relative

该方法可以实现效果,但不靠谱

3.display 的值是 inline-block、flex 或 inline-flex

该方法可以实现效果,但没有意义,不可能随便改变盒子为行内块

4.overflow:hidden;

该方法可以实现效果,是非常好用的让盒子形成 BFC 的方法,但不能满足所有的场景

BFC可以解决什么问题及作用

①、解决外部边距重叠

从上图中可以看出
垂直方向上下 margin 会重合距离依然是:50px
通过设置 overflow 属性,从而触发 BFC,可以解决外部边距重叠问题

.container {
    /* 触发BFC 解决以上边距重叠问题 */
    overflow: hidden;
}

点击查看代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container {
            /* 触发BFC 解决以上边距重叠问题 */
            overflow: hidden;
        }

        .box {
            width: 200px;
            height: 50px;
            margin: 50px;
            background-color: rgb(255, 139, 139);
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="box">box1</div>
    </div>
    <div class="container">
        <div class="box">box2</div>
    </div>
</body>

</html>

②、盒子 margin 塌陷问题

当需要在一个父元素中需要写一些列表项进行包裹时,使用 float 就会导致以下结果

.container {
    border: 1px solid #000;
    width: 400px;
    /* 创建BFC,清除浮动所带来的塌陷 */
    overflow: hidden;
}

点击查看代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container {
            border: 1px solid #000;
            width: 400px;
            /* 创建BFC,清除浮动所带来的塌陷 */
            overflow: hidden;
        }

        .box {
            /* 浮动导致父元素内容塌陷 */
            float: left;
            width: 100px;
            height: 100px;
            background: pink;
            border: 1px solid rgb(255, 0, 0);
        }
    </style>
</head>

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

</html>

③、阻止元素被浮动元素覆盖

没有实际意义,实际应用当中不会这么用,只具有理论意义

.box2 {
    width: 200px;
    height: 200px;
    background-color: rgb(0, 255, 234);
    /* 触发BFC */
    overflow: hidden; 
}

点击查看代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
            float: left;
            width: 100px;
            height: 100px;
            background-color: rgb(255, 217, 140);
        }

        .box2 {
            width: 200px;
            height: 200px;
            background-color: rgb(0, 255, 234);
            /* 触发BFC */
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="box1">box1</div>
    <div class="box2">box2</div>
</body>

</html>

标签:Box,BFC,--,前序,width,rgb,浮动,hidden,overflow
From: https://www.cnblogs.com/L-hua/p/16750782.html

相关文章

  • 教你炒股票4:什么是理性?今早买N中工就是理性!
    教你炒股票4:什么是理性?今早买N中工就是理性!  转自:http://blog.sina.com.cn/s/blog_4aeb5d150100kg04.html很奇怪,在资本市场中经常有人在教导别人要理性。而所有理......
  • UML _ 部署图
    13.1部署图的概念部署图定义部署图是描述一个系统运行时的硬件节点、在这些节点上运行的软件构件将在何处物理运行以及如何彼此通信的静态视图。一般一个系统仅有一......
  • 人民币小写转大写
    #region【将商品金额小写转换成大写】MoneySmallToBig///<summary>///将商品金额小写转换成大写///</summary>///<paramname=......
  • 教你炒股票7:给赚了指数亏了钱的一些忠告
    转自:http://blog.sina.com.cn/s/blog_4aeb5d150100kg08.html 教你炒股票7:给赚了指数亏了钱的一些忠告(2006-11-1612:00:01)    今天不宠幸孔二爷了,宠幸一下股......
  • 告示!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    出于学校保密要求,以后所有博客不再对外公开(除非我忘记设置了),在退役后会全部公开,有感兴趣的欢迎来看[撒花撒花]。当然估计没人会感兴趣我的博客对吧,没格调没理想没文采..........
  • 实验一 类与对象(1)
    实验二:代码如下: #include<iostream>usingnamespacestd;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);......
  • UML类图
    UML类图用图来表示类与类之间抽象关系的图叫做类图笔记总结来源于:B站尚硅谷——Java设计模式类之间的关系有:依赖、泛化、实现、关联、聚合和组合类图的安装本篇文......
  • 总结1003
    ##用户交互交互的本质就是输入、输出关键字inputprint或者是output##格式化输出关键字占位符%s%d特殊方法\n\a等不需要使特殊符号起作用是前面加r##算术......
  • Wondershare Filmora X (视频编辑器)11.7.3直装版 mac/win
    WondershareFilmoraforMac是一个易于使用的视频编辑器,wondersharefilmora mac版具有强大的功能和丰富的功能,使用wondersharefilmora mac软件,可以让你制作出高质量......
  • [杂谈吐槽]UE国内社区环境
    此篇博客是我个人想法,当然也是不争的事实,如果您有意见,那您也是我说那些人其中的一员。——此部分为社区环境差最恶劣的原因——国内的虚幻社区环境可以说不能再烂了,虚幻......