您现在的位置是:网站首页> 编程资料编程资料
CSS理解块级格式上下文(BFC)10分钟理解CSS BFC原理及其应用浅析CSS里的BFC和IFC的用法浅谈CSS潜藏着的BFCcss布局之BFC模式(block formatting context)CSS布局基础BFC CSS使用BFC规则布局引发外层div包裹内层div的处理方法
2021-09-04
967人已围观
简介 BFC(Block formatting context)直译为"块级格式化上下文"。它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干.接下来通过本文给大家介绍CSS理解块级格式上下文(BFC)的相关知识,感兴趣的朋友一起看看吧
1.BFC 定义
BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box(块级元素)参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干.
通俗地来说:创建了 BFC的元素就是一个独立的盒子,里面的子元素不会在布局上
影响外面的元素(里面怎么布局都不会影响外部),BFC任然属于文档中的普通流
2.BFC的生成:
知道了BFC怎么触发BFC
满足以下条件之一都可以触发BFC,变身为BFC
- 根元素
- float属性不为none
- position不为static和relative
- overflow不为visible
- display为inline-block, table-cell, table-caption, flex, inline-flex
你会发现BFC无处不在,只是自己用的时候不知道而已
3.BFC布局规则:
变身为BFC后有什么特性呢,以下:
- 内部的Box会在垂直方向,一个接一个地放置。
- Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
- 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
- BFC的区域不会与float box重叠。
- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
- 计算BFC的高度时,浮动元素也参与计算
4.BFC作用:
用起来come boby
1.防止外边距重叠
bfc导致的属于同一个bfc中的子元素的margin重叠(Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠)
问题:由图可以看到,String1和String2 之间只有20px的margin,按理来说应该是40px,但这是在bfc中导致了他们的margin重叠

代码:
String1String2
解决方法:我们可以在div外面包裹一层容器,并触发该容器生成一个BFC。那么两个div便不属于同一个BFC,就不会发生margin重叠了。

代码:
String1String2
2.清除浮动:
问题:当元素的子元素都浮动后,会出现高度坍塌的现象,即父容器的高度不会被撑开

代码:
解决方法:
bfc的规则:计算BFC的高度时,浮动元素也参与计算所以只要将父容器设置为bfc就可以把子元素包含进去:
这个容器将包含浮动的子元素,它的高度将扩展到可以包含它的子元素,在这个BFC,这些元素将会回到页面的常规文档流。

.pre2{ width: 200px; border: 2px solid red; /* 设置overflow*/ overflow:hidden; }3.解决布局:防止文字环绕

代码:
sdfadsfdff fffffffds fsfffff sfd fsdsdfsdf fffffff
这个p元素并没有移动,但是它却出现在浮动元素的下方。p元素的line boxes(指的是文本行)进行了移位。此处line boxes的水平收缩为浮动元素提供了空间。
bfc的规则:每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
解决这个问题只要将p元素添加overflow:hidden使其成为一个新的bfc就可以了

总结
以上所述是小编给大家介绍的CSS理解块级格式上下文(BFC)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
相关内容
- ES6与canvas实现鼠标小球跟随效果html5 canvas实现的鼠标响应式树叶光标跟随动画特效源码html5 canvas实现跟随鼠标移动的黑洞动画特效源码html5 canvas实现的点击跟随鼠标移动光线动画特效源码html5 canvas实现的跟随鼠标光标动画特效源码html5 canvas实现的跟随鼠标刮风下雨动画特效源码html5 canvas实现跟随鼠标旋转的箭头html5 canvas纸飞机跟随鼠标飞行特效源码
- css3 仿写阿里云水纹效果的示例代码CSS实现文字高光水波渐变的动态效果实例
- css实现右侧固定宽度 左侧宽度自适应CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 使用css与js生成的唯美炫酷的图形树效果CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 纯css3使用vw和vh实现自适应的方法浅谈css3新单位vw、vh、vmin、vmax的使用详解css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况css3新单位vw、vh的使用教程
- CSS实现优惠券边沿打孔效果使用css创建一个优惠券的方法利用css3径向渐变做一张优惠券的示例纯css3绘制的精美购物优惠券样式效果源码CSS 使用radial-gradient 实现优惠券样式
- 结合 CSS3 transition transform 实现简单的跑马灯效果的示例css3 中translate和transition的使用方法CSS3之transition实现下划线的示例代码详解css3 Transition属性(平滑过渡菜单栏案例)CSS3 transition 实现通知消息轮播条
- css3 clip实现圆环进度条的示例代码css制作收缩圆环旋转效果实例代码图解CSS3制作圆环形进度条的实例教程CSS实现圆环旋转加载动画实现CSS圆环的5种方法(小结)
- css Flex布局的可伸缩性(Flexibility)详解css布局实现左中右布局的5种方式CSS实现多行多列的布局的实例代码浅谈css网页的几种布局如何理解 CSS 布局和块级格式上下文浅谈css sticker-footer 布局详解使用CSS3的@media来编写响应式的页面 CSS布局方案小结
- 纯css写出爱心版加载效果的示例代码CSS 的加载及加载顺序简介CSS3实现10种Loading效果 CSS实现圆环旋转加载动画CSS实现横向粒子变动加载动画CSS3实现粒子旋转伸缩加载动画
