内容简介:BFC(块格式化上下文): 是Web页面可视化渲染CSS的一部分, 是布局过程中生成块级盒子的区域。也是浮动元素与其他元素的交互限定区域。简单理解就是具备BFC特性的元素, 就像被一个容器所包裹, 容器内的元素在布局上不会影响外面的元素。可见两个块元素外边距为20px。
BFC(块格式化上下文): 是Web页面可视化渲染CSS的一部分, 是布局过程中生成块级盒子的区域。也是浮动元素与其他元素的交互限定区域。
简单理解就是具备BFC特性的元素, 就像被一个容器所包裹, 容器内的元素在布局上不会影响外面的元素。
BFC常见应用
解决普通文档流块元素的外边距折叠问题
<style> * { margin: 0; padding: 0; } .demo div { width: 40px; height: 40px; } .demo1 { margin: 10px 0; background: pink; } .demo2 { margin: 20px 0; background: blue; } </style> <div class="demo"> <div class="demo1"></div> <div class="demo2"></div> </div> 复制代码
可见两个块元素外边距为20px。
我们可以使用BFC来解决这个问题,只需要把两个元素置于不同的BFC中进行隔离。
<style> * { margin: 0; padding: 0; } .demo { overflow: hidden; } .demo div { width: 40px; height: 40px; } .demo1 { margin: 10px 0; background: pink; } .demo2 { margin: 20px 0; background: blue; } </style> <div class="demo"> <div class="demo1"></div> </div> <div class="demo"> <div class="demo2"></div> </div> 复制代码
BFC清除浮动
demo演示:
<style> * { margin: 0; padding: 0; } .demo { border: 1px solid pink; } .demo p { float: left; width: 100px; height: 100px; background: blue; } </style> <div class="demo"> <p></p> </div> 复制代码
可见容器元素内子元素浮动,脱离文档流,容器元素高度只有2px。
解决方法:
.demo { border: 1px solid pink; overflow: hidden; } 复制代码
阻止普通文档流元素被浮动元素覆盖
demo演示:
<style> * { margin: 0; padding: 0; } .demo1 { width: 100px; height: 100px; float: left; background: pink } .demo2 { width: 200px; height: 200px; background: blue; } </style> <div class="demo"> <div class="demo1">我是一个左侧浮动元素</div> <div class="demo2">我是一个没有设置浮动, 也没有触发BFC的元素</div> </div> 复制代码
demo2部分区域被浮动元素demo1覆盖, 但是文字没有覆盖, 即文字环绕效果。
解决办法就是触发demo2的BFC。
.demo2 { width: 200px; height: 200px; background: blue; overflow: hidden; } 复制代码
自适应两栏布局
demo演示:
<style> * { margin: 0; padding: 0; } .container { width: 100%; } .float { width: 200px; height: 100px; float: left; background: red; opacity: 0.3; } .main { background: green; height: 100px; overflow: hidden; } </style> <div class="container"> <div class="float"> 浮动元素 </div> <div class="main"> 自适应 </div> </div> 复制代码
如何触发BFC
1. 根元素或包含根元素的元素 2. 浮动元素(元素的 float 不是 none) 3. 绝对定位元素(元素的 position 为 absolute 或 fixed) 4. 行内块元素(元素的 display 为 inline-block) 5. 表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值) 6. 表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值) 7. 匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table) 8. overflow 值不为 visible 的块元素 9. display 值为 flow-root 的元素 10. contain 值为 layout、content或 strict 的元素 11. 弹性元素(display为 flex 或 inline-flex元素的直接子元素) 12. 网格元素(display为 grid 或 inline-grid 元素的直接子元素) 13. 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1) 14. column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
新媒体运营实战技能
张向南 勾俊伟 / 人民邮电出版社 / 2017-5 / 39.80元
《新媒体运营实战技能》共7章。第1章重点介绍了新媒体图片的创意思路及制作技巧,包括微信公众号封面图、信息长图、icon图标、九宫图、gif图片的具体实战操作;第2章重点介绍了创意云文字、微信排版、滑动看图等新媒体文字的排版方法与处理技巧;第3章是新媒体表单,引导读者对表单结构、设计场景及具体应用全面了解;第4章关于H5的创意思路及制作方法,解析了引发H5传播的心理因素,并重点介绍H5的制作工具与具......一起来看看 《新媒体运营实战技能》 这本书的介绍吧!