css:探讨BFC的理解及使用

  • 问题:css中清除浮动的方式有哪些?

  • 答:
    1、 clear:both
    2、给父级添加样式 overflow:hidden
    3、父级也使用float:left,二者都浮动起来
    4、给父级一个固定高度(使用场景有限,必须知道父级高度)
    5、不拉不拉一大堆.....

  • 问题:上面说的第二种方式,给父级设置 溢出隐藏,为什么能够起到清除浮动的效果?

  • 答:因为触发了bfc

  • 问题:哪些属性会触发bfc效果呢?

  • 答:......

针对上面的问题,做下研究及总结:

BFC: 全称 Box Formatting Context(块级格式化上下文)
它是一个独立的渲染区域,

重点: 计算BFC的高度时,浮动元素也参与计算;内部的box会在垂直方向,一个接一个地放置;BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

哪些属性会生成BFC?

  • 根元素
  • float属性值不为 none
  • position属性值为 absolute或fixed
  • display属性值为inline-block, table-cell, table-caption, flex, inline-flex
  • overflow值不为visible

现在回到上面的问题,第二种和第三种实现方式,都会触发BFC,所以问题得以解决。

反推:是不是只要触发了BFC,就能实现浮动的清除?

答案是肯定的

实验截图:
外层div的样式

内层div样式

根据上面所说的几个属性都试过了,确实是能够实现清除浮动的。

题外话:哪些样式属性会触发浏览器重绘或重排?
查看网站 csstriggers

图中已标出属性触发的场景

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,845评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,598评论 5 15
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 6,361评论 2 66
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 996评论 0 2
  • 原谅我年少无知,把你当爱情。
    青梅小阅读 581评论 3 4