CSS笔记——BFC(块级格式化上下文)

BFC(Block Formatting Context)(块级格式化上下文)

在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案:

  • 普通流 (normal flow)

在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。

  • 浮动 (float)

在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

  • 绝对定位 (absolute positioning)

在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。

1、BFC属于普通流

它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用

具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

BFC可以用以下几种方式创建:

  1. 根元素或包含根元素的元素
  2. 浮动元素(float不为none)
  3. 绝对定位元素(position为absolute或fixed)
  4. display属性值为inline-block、table-cell、table-caption、flex、inline-flex
  5. overflow属性不为visible的块级元素

在BFC中,有以下几个特点:

  1. 同一个 BFC 下外边距会发生折叠
  2. BFC 可以包含浮动的元素(清除浮动)
  3. BFC 可以阻止元素被浮动元素覆盖
  4. BFC在页面上是一个独立的容器,内部的子元素不会影响外部的元素。
  5. 计算BFC的高度时,浮动元素也参与计算。

BFC的应用可以解决许多问题,例如清除浮动、解决margin重叠等。

2、overflow属性

overflow属性用于控制元素溢出内容的处理方式,可取值包括:

  • visible:默认值,内容不会被修剪,允许内容超出容器。
  • hidden:内容被修剪,并且其余内容是不可见的。
  • scroll:内容被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  • auto:浏览器会决定使用滚动条还是显示内容。

background-attachment属性用于设置背景图片相对于元素的定位方式,可取值包括:

  • scroll:默认值,背景图片随着元素滚动。
  • fixed:背景图片相对于视口固定,不随着元素滚动。
  • local:背景图片相对于元素内容固定,不随着元素滚动。
  • initial:设置为默认值。
  • inherit:继承父元素的属性值。

overflow属性和background-attachment属性可以结合使用,以实现一些特殊的效果。

例如,可以将容器的overflow属性设置为hidden,然后将背景图片的background-attachment属性设置为fixed,这样背景图片就会固定在视口中,但是超出容器的部分会被隐藏。这样可以实现一些有趣的滚动效果,比如在页面滚动时,背景图片固定在视口中,但是内容会随着页面滚动。

相关推荐
Rabitebla10 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
麦麦麦当劳大王11 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
小lu飞12 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
smallcelebration12 小时前
151 从0开始搭建后端项目
前端·firefox
wangruofeng12 小时前
手机和电脑传文件,除了微信还有 LocalSend
前端
excel13 小时前
基于 GPT 的自动发布文章接口方案:从一句话或一张图片生成并发布内容
前端·javascript·后端
其实防守也摸鱼14 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
朱涛的自习室15 小时前
212 个需求、22 万行代码:Agent 接管开源项目的 19 天
android·前端·人工智能
aZhe的全栈知识分享15 小时前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
无心水15 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师