谈谈BFC

2023-11-19

谈谈BFC

介绍

BFC:(Block Formatting Context):块级格式化上下文。它理解成一个独立的区域,此区域里面的子元素不会影响到外面的元素。反之也如此。

BFC布局规则:

  1. 内部的Box会在垂直方向,一个接一个地放置。
  2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生外边距外边距合并
  3. 每个元素的margin box的左边, 与包含块borderbox的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  4. BFC的区域不会与float box重叠。 
  5. 5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
  6. 计算BFC的高度时,浮动元素也参与计算

如何生成BFC:

  1. body 根元素
  2. 浮动元素:float 除 none 以外的值
  3. 定位元素:position (absolute、fixed)
  4. display 为 inline-block、table-cells、flex
  5. overflow 除了 visible 以外的值 (hidden、auto、scroll)

作用:

  1. 自适应两栏布局

    每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反。即使存在浮动也是如此。我们可以利用原理BFC的区域不会与float box重叠,实现自适应两栏布局。

     <style>
           .big {
                margin-top:200px;
                margin-left:200px;
                width: 200px;
                height: 200px;
                background-color:pink;
            }
    
            .small-1 {
                width: 100px;
                height: 150px;
                background-color: purple;
                float: left;
            }
            .small-2 {
                height: 200px;
                background-color: deeppink;
            }
        </style>
    </head>
    
    <body>
        <div class="big">
            <div class="small-1">
            </div>
            <div class="small-2">
            </div>
        </div>
    </body>
      
            .small-2 {
                height: 200px;
                background-color: deeppink;
                overflow: hidden;
            }
  2. 清除内部浮动
    为达到清除内部浮动,我们可以触发外部元素生成BFC,那么外部元素在计算高度时,外部元素内部的浮动元素child也会参与计算

    <style>
            .big {
                width: 300px;
                background-color:pink; 
                border: 1px solid blue;
            }
            .small {
                width: 100px;
                height: 100px;
                background-color: purple;
                border: 1px solid #ccc;
                float: left;
            }
        </style>
    </head>
    <body>
        <div class="big">
            <div class="small">
            </div>
        </div>
    </body>

    .big {
                width: 300px;
                background-color:pink; 
                border: 1px solid blue;
                overflow: hidden;
            }


  3. 防止垂直方向margin合并
    产生外边距合并原因:Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生合并
    解决方法:垂直方向上的外边距合并,可以在其中的以一个元素外面包裹一层容器,并触发该容器生成一个BFC。那么两个元素便不属于同一个BFC,就不会发生margin重叠了。 
    父元素与子元素发生外边距合并解决方法: 给子元素或者父元素创建BFC
    (1)给父元素创建BFC:overflow、float、position、display(即如何生成BFC(2-5))
    (2)给子元素创建BFC:float、position、display(即如何生成BFC(3-5)) (此处不能使用overflow)、给子元素外面包裹一层容器,并触发该容器生成一个BFC
    (ps:应用原理BFC区域是一个独立的区域,不会影响外里面的元素。)  

 

父元素与子元素发生外边距合并解决方法: 给子元素或者父元素创建BFC         

<style>
        .big {
            width: 100px;
            height: 100px;
            background-color: #ffc0cb;
        }
        .small {
            width: 50px;
            height: 50px;
            margin-top: 50px;
            background-color: purple;
        }
 </style>

<body>
    <div class="big">
        <div class="small">
        </div>
    </div>
</body>

  


给父元素创建BFC:overflow、float、position、display(即如何生成BFC(2-5))


        .big {
            width: 100px;
            height: 100px;
            background-color: #ffc0cb;
            overflow: hidden; 
            /* float: left; */
            /* position: fixed;
            /* display: inline-block; */
         }

给子元素创建BFC:float、position、display(即如何生成BFC(3-5)) (此处不能使用overflow)

        .small {
            width: 50px;
            height: 50px;
            margin-top: 50px;
            background-color: purple;
            /* float: left; */
            display: inline-block;
            /* position: fixed; *      }
给子元素外面包裹一层容器,并触发该容器生成一个BFC

<style>
    .big {
width: 100px; height: 100px; background-color: #ffc0cb; }     .small { width: 50px; height: 50px; margin-top: 50px; background-color: purple; } .father { overflow: hidden; } </style></head><body> <div class="big"> <div class="father"> <div class="small"> </div> </div> </div></body>


                

介绍

BFC:(Block Formatting Context):块级格式化上下文。它理解成一个独立的区域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谈谈BFC 的相关文章

随机推荐

  • Windows脚本对最后修改时间超过24小时的文件进行处理

    这次我接到一个任务 是写一个windows上运行的脚本 讲某个文件夹下最后修改时间超过24小时的文件移到另一个文件夹 然后在判断有生成的文件超过十分钟的关闭一个程序再启动它 上网搜了一下 有很多相关的 比如说把最后修改时间的文件超过一天的删
  • 第一章 开发环境的配置

    1 1 操作系统的选择 常见的操作系统有 Windows Linux 和maxOS 大部分生产环境所用到的操作系统是Liunx 这使得它具有天然的开发优势 本书也将使用Linux操作系统作为学习环境 书中大部分软件安装 环境配置和案例将以L
  • 设计randompool结构

    哈希表是get每一个key的value 而本题没有value 只有key 我们准备两张哈希表 以及一个变量 size 一个表存放某 key 的标号 另一个表根据根据标号取某个key 如下图所示 A是第0个进来的 B是第二个进来的 我们现在先
  • 仿中国婚博会微信小程序

    仿中国婚博会微信小程序 app json pages pages index index pages cash cash pages marry marry pages community community pages me me pag
  • react 全局挂载组件

    在index js 文件中导入react需要挂载的组件 import message from antd 全局挂载组件 React message function arg 默认部分参数 const type success content
  • js一道this笔试题

    JS this阿里笔试面试题 代码 1 this 谁调用就指向谁 2 在对象中this为对象本身 3 直接调用this为window var name 222 var a name 111 say function console log
  • 如何在Debian(kali)中配置代理(agent)服务器?

    开始搭建代理服务器 首先我参考如下文章进行搭建代理服务器 步骤每一个命令都执行过报了各种错 找了博客 目前尚未开始 我已经知道我的路很长 很难走呀 加油 go go go 第一个教程 第二个教程 Ubuntu Debian CentOS搭建
  • MySQL数据查询 - 简单查询

    简单查询 在MySQL中可以通过SQL语句来实现基本数据查询 SQL语句可以通过如下多种使用 查询所有字段数据 查询指定字段数据 避免重复数据查询 对结果进行排序和分组等查询 数据库中可能包含数量庞大的表 表中可能包含无数的记录 如果没有两
  • 掌握 Effective C++ : 条款01

    背景 Effective C 是每个 C 程序员都应该读的经典之作 书中涵盖了 C 编程中的一系列最佳实践 包括了面向对象设计 模板 STL 异常处理等方面的内容 由于 C 的发展非常迅速 书中的某些内容可能已经过时 但依然是值得好好学习的
  • abc300.com站点被注入脚本

    在进行abc300 com的页面SEO时发现 所有页面受到注入攻击 全部asp页最后被添加一页 弄了1个多小时 大部份页面被清除 目前已经获得www hulijie com的ftp 222 33 63 206 用户名admin 密码尚需分析
  • postgresql 高可用框架对比

    PostgreSQL 的高可用框架有许多种 每种都有其独特的优缺点 下面是一些常见的高可用框架的对比 Pgpool II 这是一个开源的负载均衡和数据库代理 支持主从复制和读写分离 它的优点在于易于安装和使用 缺点是不支持实时备份 Repm
  • Log4Net 日志管理

    Log4Net日志管理 A Log4Net日志管理 Log4Net的日志级别如下 级别 允许的方法 Boolean属性 优先级别 OFF Highest FATAL void Fatal bool IsFatalEnabled RROR v
  • 函数的节流与防抖

    1 节流 节流的意思是 规定时间内 只触发一次 比如我们设定500ms 在这个时间内 无论点击按钮多少次 它都只会触发一次 具体场景可以是抢购时候 由于有无数人 快速点击按钮 如果每次点击都发送请求 就会给服务器造成巨大的压力 但是我们进行
  • C语言-求因子和

    求因子和 题目描述 一个数的因子和不包括它本身的所有因子之和 如12的因子有1 2 3 4 6所以12的因子和是16 现在给定一个数n n lt 10 9 求它的因子和 输入格式 一个数 输出格式 一个数 样例输入 12 样例输出 16 提
  • 有趣的MyBatis——延迟加载

    为什么80 的码农都做不了架构师 gt gt gt 我们知道在resultMap中使用级联对于查找相关数据来说很方便 比如说查找雇员基本信息 顺便得到了雇员的体检信息 家庭信息 部门信息 但是有时我们不需要相关数据 那么在一些复杂的系统中
  • 初学MaxCompute

    MaxComputer是阿里云提供的一种全新的大数据计算服务 其具备更高效的计算及存储能力 本人的理解就是一个类似于HBase Hive的云上的数据仓库 参考官方文档系列 https yq aliyun com articles 85595
  • “ping“不是内部或外部命令,也不是可运行的程序 或批处理文件。

    输入ping 出现问题 ping 不是内部或外部命令 也不是可运行的程序或批处理文件 我的电脑 属性 高级系统设置 环境变量 系统变量 PATH 编辑 输入C Windows System32 再次输入ping 即表示可以了
  • 数据迁移时,需要大量set时的批量操作

    我遇到了一种情况 A类有很多的数据 需要迁移到新的A类或者和字段和A类相同的数据 例如 A1 A2 A3 A4 A100 需要进行批量操作 A1 gt 例 加密 A2 gt 加密 每个字段或部分字段都需要加密 那么正常的情况下需要有多少字段
  • C语言入门

    什么是C语言 C语言是一门通用计算机编程语言 广泛应用于底层开发 C语言的设计目标是提供一种能以简易 的方式编译 处理低级存储器 产生少量的机器码以及不需要任何运行环境支持便能运行的编程 语言 尽管C语言提供了许多低级处理的功能 但仍然保持
  • 谈谈BFC

    谈谈BFC 介绍 BFC Block Formatting Context 块级格式化上下文 它理解成一个独立的区域 此区域里面的子元素不会影响到外面的元素 反之也如此 BFC布局规则 内部的Box会在垂直方向 一个接一个地放置 Box垂直