盒模型BFC渲染机制

2023-11-16

目录

一. BFC基本慨念

二. BFC渲染规则

三. 如何创建BFC元素


一. BFC基本慨念

一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。

网页是一个一个盒子组成的,而BFC就是一种css盒模型的渲染规则。

二. BFC渲染规则

  • 以下列举一些比较重要的规则:
  1. 根元素<html>是一个BFC元素。
  2. 在同一个BFC元素中,相邻盒子垂直方向上的margin会发生折叠,取较大的margin值。
  3. BFC元素是一个独立的容器,外部元素和内部元素互不影响。
  4. BFC的区域不会与浮动盒子产生交集,而是紧贴浮动边缘。
  5. 计算BFC的高度时,自然也会检测浮动或者定位的盒子高度。
  6. BFC元素不再和其子元素发生 margin 折叠。
  • 了解上面的规则后,我们就能解释平时会遇到的一些css奇怪现象:

1. 垂直方向上元素margin的合并现象

首先,两个父子关系的div,给子元素添加一个margin-top: 100px后,父元素和子元素同时下移100px。

示例如下:

 代码如下:

<style>
    .parent {
        width: 200px;
        height: 200px;
        background: blue;
    }
    .child {
        width: 100px;
        height: 100px;
        background: yellow;
        margin-top: 100px;
    }
</style>

<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>

原因:规则1和规则2


2. 垂直方向上元素margin的合并现象

两个相邻的div之间分别设置了margin-bottom: 60px和margin-top: 40px,而他们实际的间距只有60px。

示例如下:

代码如下 :

<style>
    .box1 {
        width: 200px;
        height: 100px;
        background: blue;
        margin-bottom: 60px;
    }
    .box2 {
        width: 200px;
        height: 100px;
        background: yellow;
        margin-top: 40px;
    }
</style>

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

原因:规则1和规则2


3. overflow:hidden可以清除浮动

本文中所有的“清除浮动"均指清除浮动造成的副作用

首先,两个父子关系的div,给子元素添加float: left后,子元素脱离的文档流,于是父元素的高度为0,如下图:

然后父元素添加 overflow: hidden 就可以清除浮动,如下图:

代码如下:

<style>
    .parent {
        width: 200px;
        border: 4px solid red;
        overflow: hidden;
    }
    .child {
        width: 100px;
        height: 100px;
        background: yellow;
        float: left;
    }
</style>
        
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>

原因:规则1和规则5


4. overflow:hidden 配合浮动,可以实现自适应布局

首先,两个兄弟关系的div在同一个父div中,给子元素1添加float: left后,于是父元素高度由子元素2撑起,子元素2占据所有父元素,子元素1脱离的文档流,如下图:

然后子元素2添加overflow: hidden 后,其紧贴子元素1边缘,不再占据整个父元素,如下图:

代码如下: 

<style>
    .parent {
        width: 100%;
        border: 4px solid red;
    }
    .box1 {
        width: 100px;
        height: 100px;
        background: blue;
        float: left;
    }
    .box2 {
        height: 100px;
        background: yellow;
        overflow: hidden;
    }
</style>
    
<body>
    <div class="parent">
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
</body>

原因:规则1和规则4


三. 如何创建BFC元素

根元素<html>就是最大的BFC容器。

创建BFC元素的方式很多,常见包括:

  • 根元素或其它包含它的元素
  • 浮动元素 (元素的 float 不是 none)
  • 绝对定位元素 (元素具有 position 为 absolute 或 fixed)
  • 内联块 (元素具有 display: inline-block)
  • 表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
  • 表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
  • 具有overflow 且值不是 visible 的块元素,
  • display: flow-root
  • column-span: all 应当总是会创建一个新的格式化上下文,即便具有 column-span: all 的元素并不被包裹在一个多列容器中。
  • 一个块格式化上下文包括创建它的元素内部所有内容,除了被包含于创建新的块级格式化上下文的后代元素内的元素。

其中常见的还是overflow : hidden产生的。

 

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

盒模型BFC渲染机制 的相关文章

  • HTML+CSS简单复习

    目录 什么是HTML CSS VSCode编辑器 HTML基本结构和属性 HTML初始代码 HTML注释 标题与段落 文本修饰标签 图片标签 路径的引入 链接标签 锚点 特殊字符 列表标签 表格标签 表单标签 div和span CSS基础语
  • HTML+CSS - 导航栏下拉菜单

    div class main div class nav ul li a href 项目一 a ul li a href 分类一 a li li a href 分类二 a li li a href 分类三 a li li a href 分类
  • Spring Boot中使用WebSocket [第三部分]

    使用消息队列实现分布式WebSocket 在上一篇文章 https www zifangsky cn 1359 html 中我介绍了服务端如何给指定用户的客户端发送消息 并如何处理对方不在线的情况 在这篇文章中我们继续思考另外一个重要的问题
  • HTML+CSS项目案例

    文章目录 1 表格练习 2 文本样式练习 3 图片标签练习 4 盒子模型练习一 5 盒子模型练习二 6 盒子模型练习三 7 浮动练习 8 边框练习一 9 边框练习二 10 图文混排 11 列表练习 1 表格练习 案例演示 table tr
  • 在页面中输入上下居中点号(·)

    随便打开一个聊天窗口输入汉字 点 在弹出的选项框中选择 号即可
  • CSS实现文字描边效果

    一 介绍 最近在一个项目的宣传页中 设计师使用了文字描边效果 之前我确实没有实现过文字的描边效果 然后我在查阅资料后 知道了实现方法 文字描边分为两种 内外双描边和单外描边 也就是指在给文字加上描边效果后 描边的方向是向内外同时占用文字空间
  • 媒体查询响应式布局

    移动端样式开始 移动端共用样式开始 media screen and min width 320px and max width 1169px 移动端共用样式结束 768 1169样式开始 1169根据设计图内容宽度来定 media scr
  • href 属性 和 target属性

  • vue 的事件修饰符(v-on, v-model)

    先谈谈我对vue 的一些指令的理解吧 v bind 顾名思义是绑定的意思 但是只能绑定属性 语法糖 而 v on 是绑定一个事件 语法糖 v model 是双向数据的绑定 只能用于表单中 而值得一说的v model 相当于是 v bind
  • JavaScript的三大组成部分(收藏)

    JavaScript是一种属于网络的脚本语言 已经被广泛用于Web应用开发 常用来为网页添加各式各样的动态功能 为用户提供更流畅美观的浏览效果 通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的 各位小伙伴在进阶的时候总会
  • 清除浮动之双伪元素清除浮动

  • js延时函数

    js延时函数总结 在js中 延迟执行函数有两种 setTimeout和setInterval 用法如下 setTimeout test 5000 5秒后执行testFunction 函数 只执行一次 setInterval test 500
  • W3C?什么是W3C相关标准?

    什么是W3C标准 什是W3C标准 不是一个标准 而是万维网联盟制定的一系列标准 网页主要由三部分组成 结构 Structure 表现 Presentation 和行为 Behavior 对应的标准也分三方面 结构化标准语言主要包括XHTML
  • line-height 百分比和数值设置行高

    一 line height的值为百分比 子集元素继承父级元素的距离 1 例如
  • HTML---表格合并(详解)

    例子详解 关键字解释 border 1 表格标签默认是无边框的 所以这里加上border 1 是为了更好的进行样式展示 colspan 2 表示的是进行单元格列合并 在该行中 先是th表头占据了一个单元格 之后遇到th 用colspan 2
  • 盒模型BFC渲染机制

    目录 一 BFC基本慨念 二 BFC渲染规则 三 如何创建BFC元素 一 BFC基本慨念 一个块格式化上下文 block formatting context 是Web页面的可视化CSS渲染出的一部分 它是块级盒布局出现的区域 也是浮动层元
  • el-table绑定的数组里面的对象值进行修改时,视图没有更新

    在Vue js中 如果您在对绑定到el table的数组里面的对象值进行修改后发现视图没有更新 可能是因为Vue js无法检测到数据的变化 解决这个问题的方法有以下几种 使用Vue set 方法显式地告诉Vue js数据已经发生了变化 例如
  • 如何将li的前面那个圆点去掉

    只需要将 css样式 的 list style type 属性设置为none即可 代码如下 list style type none span style font size 18px span 下面的代码位于标签内 span style
  • Element Dialog水平垂直居中样式

    前言 Element UI 是目前最火的前端Vue js UI组件库 但是Dialog默认样式并不是水平垂直居中 这就很让人很尴尬 不过对于有水平垂直居中的需求来说 我们是可以自己进行调整的 最常用的方法也试过了 最终得到以下方法是最佳的
  • CSS 实现不规则元素的阴影

    大伙在工作中 尤其写页面样式 相信很多地方用到 box shadow 阴影属性 但是这个属性只能用到规则的元素上 亦或者说只能用到一个元素上 那当我们遇到不规则的元素时 想加阴影就比较棘手了 但是 CSS 提供了此问题的解决方案 今天 我们

随机推荐

  • 关于ngx_rtmp_hls_append_sps_pps造成的hls: error appenging SPS/PPS NALs错误

    关于ngx rtmp hls append sps pps造成的hls error appenging SPS PPS NALs错误 一giao我哩giao 今天在调试同rtmp配合nginx推流的时候 发现推live可以推成功 结果在推h
  • 多因素认证与身份验证:分析不同类型的多因素认证方法,介绍如何在访问控制中使用身份验证以增强安全性

    随着数字化时代的到来 信息安全问题变得愈发重要 在网络世界中 用户的身份往往是保护敏感数据和系统免受未经授权访问的第一道防线 单一的密码已经不再足够 多因素认证 MFA 应运而生 成为提升身份验证安全性的重要工具之一 本文将深入探讨不同类型
  • rpm常用命令记录

    文章目录 1 常用rpm命令 2 rpm参数 1 常用rpm命令 rpm ivh xxx rpm 安装rpm rpm Uvh xxx rpm 升级rpm rpm e xxx rpm 删除rpm rpm qi xxx rpm 查看安装包的信息
  • node.js 数据实现分页问题(后端)

    最近在写项目时 碰到的问题 let arr let rows for let e 0 e
  • TCP 和 UDP 的 Socket 调用

    在网络层 Socket 函数需要指定到底是 IPv4 还是 IPv6 分别对应设置为 AF INET 和 AF INET6 另外 还要指定到底是 TCP 还是 UDP TCP 协议是基于数据流的 所以设置为 SOCK STREAM 而 UD
  • live555学习之一整体说明

    live555 是一套采用rtsp协议作为其核心 可以用来传输接收多媒体包括H264 H265 音频等多媒体数据的开源架构代码集 通过扩展一些类的方式 实现rtsp server 和client端的功能 并且提供源码 其源码 可以是从官网
  • python程序封装成exe_手把手教你给Python程序写图形界面,并且打包成exe文件

    环境配置 官网下载Python3 LZ的配置环境是Python3 6 PyCharm 2017 2 1 pip3 install PyQt5 下载PyQt5pip install PyQt5 tools i http pypi douban
  • 【嵌入式Linux】开发环境搭建

    一 概述 在进行某一个芯片平台开发前 一般都需要在电脑上安装一系列软件 然后在这些软件上阅读 编写 编译和调试在该平台上运行的代码 最后将编写好的代码通过某种方式烧录到该芯片的对应地址运行 在电脑上安装的这一系列软件的过程 就是开发环境的搭
  • Python数据类型——字符串、列表、元组

    文章目录 一 字符串 二 列表 三 元组 四 字符串 列表和元组的常用方法 一 字符串 在Python中 可以使用单引号或者双引号来创建字符串 单引号或者双引号没有任何区别 字符串也可以赋值给变量 字符串 str1 字符串 str2 字符串
  • Android Studio使用常见问题(一)

    一 无法成功build 1 出现如下错误 Error Unable to tunnel through proxy Proxy returns HTTP 1 1 400 Bad Request 2 原因分析 本地gradle版本与项目制定的
  • php代码学习(二)绕过空白过滤

    绕过空白过滤
  • 华为OD社招面试(技术二面完)--总结复盘

    2020年4月22日 华为OD社招面试复盘总结 一 华为OD简介 首先来解释一下什么是华为OD面试 OD一般是指的是华为的 外包 公司 比如像德科这种 网上其实有很多人都吐槽过这个招聘模式 因为招进去的人不直接是华为内部的人 挂在德科名下或
  • windows批处理:if else的踩坑点及排版优化

    参考 https www jianshu com p f0bde7d355a4 总结 见参考文章
  • python提取excel一列或多列数据另存为新表(1)

    系列文章目录 文章目录 系列文章目录 前言 一 python提取excel指定一列保存到新表 二 python提取excel指定两列保存到新表 总结 前言 一 python提取excel指定一列保存到新表 原数据举例如下 提取B列另存到新表
  • DFS深度优先搜索

    目录 一 DFS的概念 DFS的定义 DFS的搜索方式 DFS采用的数据结构 DFS的特点 二 DFS的实战应用 1 排列数字 2 n 皇后问题 一 DFS的概念 DFS的定义 DFS Depth First Search 深度优先搜索 是
  • 阈值分割法

    阈值分割法可以说是图像分割中的经典方法 它利用图像中要提取的目标与背景在灰度上的差异 通过设置阈值来把像素级分成若干类 从而实现目标与背景的分离 一般流程 通过判断图像中每一个像素点的特征属性是否满足阈值的要求 来确定图像中的该像素点是属于
  • chatGPT插件是什么,chatGPT插件作用介绍

    简介 openAI团队已经在 ChatGPT 中实现了对插件的初步支持 插件是专门为以安全为核心原则的语言模型设计的工具 可帮助 ChatGPT 访问最新信息 运行计算或使用第三方服务 目前体验与开发需要先加入等候名单 官网介绍链接 htt
  • java中如何导入同一个包下其他类文件中的方法,举个例子

    在 Java 中 可以使用 import 关键字导入同一个包下的其他类文件中的方法 例如 假设在同一个包 com example 下有两个类 ClassA 和 ClassB 那么可以在 ClassB 中导入 ClassA 中的方法 代码如下
  • LeetCode:二叉树的遍历方式(13道经典题目)

    LeetCode 二叉树的遍历方式 13道经典题目 本文带来与二叉树的遍历方法有关的经典题目 主要实现是C 144 二叉树的前序遍历 94 二叉树的中序遍历 145 二叉树的后序遍历 102 二叉树的层序遍历 107 二叉树的层序遍历 II
  • 盒模型BFC渲染机制

    目录 一 BFC基本慨念 二 BFC渲染规则 三 如何创建BFC元素 一 BFC基本慨念 一个块格式化上下文 block formatting context 是Web页面的可视化CSS渲染出的一部分 它是块级盒布局出现的区域 也是浮动层元