css里的BFC的用法
一、对BFC的了解
Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示规则
(可以把 BFC 理解为一个封闭的大箱子,,容器里面的子元素不会影响到外面的元素)
二、如何触发BFC
只要元素满足下面任一条件即可触发 BFC 特性:
- body 根元素;
- 浮动元素:float 不为none的属性值;
- 绝对定位元素:position (absolute、fixed)
- display为: inline-block、table-cell、flex
- overflow 除了visible以外的值 (hidden、auto、scroll)
三、BFC的布局规则
内部的盒子会在垂直方向,一个个地放置;
- BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
- 属于同一个BFC的 两个相邻Box的 上下margin会发生重叠 ;
- 计算BFC的高度时,浮动元素也参与计算
- 每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;
- BFC的区域不会与float重叠;
BFC的应用
1、解决margin重叠问题
示例:
<!doctype html> <html> <head> <meta charset="utf-8"/> <title></title> <style> .container { background-color: red; overflow: hidden; width:200px; } p { margin: 10px 0; background-color: lightgreen; width:200px; } .newBFC { overflow: hidden; } </style> </head> <body> <div class="container"> <p> 1</p> <p> 2</p> <div class="newBFC"> <p> 3</p> </div> </div> </body </html>
运行结果
解析:1和2margin重叠了;为了让3不跟1,2一样只用在3上面加一个overflow: hidden。
2、解决浮动高度塌陷问题
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>BFC浮动问题</title> <style> .one { /* 文档流 里面的文字标签将父元素撑起来 */ background-color: pink; background-color: pink; overflow: hidden; } .two { float: left; } </style> </head> <body> <!-- 文档流 从上到下,当遇到float、position:absolute时,会离开文档流 --> <div class="one"> <div class="two">Hello World!</div> </div> 你好世界! </body> </html>
运行结果:
解析:第一幅图是浮动塌陷了,为了解决这个问题只用在.one标签上加上overflow: hidden;
三、解决侵占浮动元素的问题
示例:
<!doctype html> <html> <head> <meta charset="utf-8"/> <title></title> <style> .dsj{height: 100px; width: 100px; float: left; background: #ff0} .jfj{ width: 200px; height: 200px; background: #eee; overflow:hidden; } </style> <body> <div class="dsj">1</div> <div class="jfj">2</div> </body> </html>
运行结果:
解析:左边第一幅图是被浮动元素侵占,为了解决这个问题只用在.jfj标签上加上overflow: hidden就可以;
总结:以上就是关于BFC的一些分析,BFC 是一种概念,是对前端布局技术的一种理论上的总结,掌握它可以让我们在使用CSS +DIV进行布局时,知道一些特殊操作以及规避问题的原理。BFC的概念比较抽象,但通过实例分析,有助于我们对BFC的理解。
在此仅列举了几个例子,欢迎大家一起探索更多^_^
相关推荐
k韶华 2019-06-27
yibawuqing 2019-06-27
dazhifu 2020-04-16
CaiKanXP 2020-01-14
impress 2019-12-13
jianqi 2019-11-19
尚衍亮 2019-11-19
huakaiwuxing 2019-11-19
csscode 2019-07-01
nemunemu 2019-07-01
懵懂听风雨 2019-07-01
lanzhusiyu 2019-07-01
jianqi 2019-07-01
NARUTOLUOLUO 2019-06-30
yaodilu 2019-06-30
尚衍亮 2019-06-30
juzhengqian0 2019-06-30
葉無聞 2019-06-29