CSS布局篇

226 阅读2分钟

web页面开发中布局是所有人都绕不开的第一步,那么你是否真的懂并且会布局呢? 说到布局就得先了解下什么是BFC

什么是BFC

BFC 即 块格式化上下文(Block Formatting Context) 是web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素交互的区域。

下面的方式可以创建块格式化上下文呢

  • 根元素(<html>)
  • 浮动元素(元素的float不是none)
  • 绝对定位元素(元素的 position 为 absolute 或 fixed)
  • 行内块元素(元素的 display 为 inline-block)
  • 表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值)
  • 表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
  • 匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table)
  • overflow 值不为 visible 的块元素
  • display 值为 flow-root 的元素
  • contain 值为 layout、content或 paint 的元素
  • 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
  • 网格元素(display为 grid 或 inline-grid 元素的直接子元素)
  • 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)
  • column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。

块格式化上下文包含创建它的元素内部的所有内容

清除浮动的方法

1. &:after{
        display: table;
        content: " ";
        clear: both;
    }
2. overflow: hidden;
3. display: flow-root;
    兼容写法:.wrapper{display: flow-root;} @supports not (display:flow-root) { .wrapper::after { content: ''; display: table; clear:both; } }
以上三种方式 都是在父元素上进行设置