HTML5 10_BFC

13 篇文章 0 订阅
13 篇文章 0 订阅

一.块级格式化上下文(block formatting context)

1.元素的显示模式

BFC是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干

值(display: ;)

描述

none

此元素不会被显示

block

此元素将显示为块级元素,前后会带有换行符

inline

默认值:此元素将显示为内联元素,元素前后没有换行符

inline-block

行内块元素

list-item

此元素会作为列表显示

run-in

此元素会根据上下文作为块级元素或内联元素显示

compact

CSS中有值compact,由于缺乏广泛支持,现已从CSS2.1中删除

market

CSS中有值mark,由于缺乏广泛支持,现已从CSS2.1中删除

table

此元素会作为块级元格来显示(类似<table>),表格前后带有换行符

inline-table

此元素会作为内联表格来显示(类似<table>),表格前后没有换行符

table-row-group

此元素会作为一个或多个行的分组来显示(类似<tbody>)

table-header-group

此元素会作为一个或多个行的分组来显示(类似<thead>)

table-footer-group

此元素会作为一个或多个行的分组来显示(类似<tfoot>)

table-row

此元素会作为一个表格行显示(类似<tr>)

table-column-ground

此元素会作为一个或多个列的分组来显示(类似<colgroup>)

table-column

此元素会作为一个单元格显示(类似<col>)

table-cell

此元素会作为一个表格单元格显示(类似<td>和<th>)

table-caption

此元素会作为一个表格标题显示(类似<caption>)

inherit

规定应该从父元素继承display的值

①block-level box:display属性为block, list-item, table的元素,会生成block-level box。并且参与block fomatting context

②inline-level box:display属性为inline, inline-block, inline-table的元素,会生成inline-level box。并且参与inline formatting context

2.具有BFC的条件

display属性为block、list-item、table的元素,会产生BFC

3.会生成BFC的元素

①根元素 html

②浮动元素(元素的float不是none)

③绝对定位元素(元素的position为absolute或fixed)

④display为inline-block、table-cell、table、inline-table、flex或inline-block、grid或inline-grid

⑤overflow值不为visible的块元素

⑥contain值不为layout、content、paint的元素

⑦多列容器(元素的column-count或column-width不为auto,包括column-count为1)

4.BFC布局规则

①内部的Box会在垂直方向,一个接一个地放置。

②Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

③每个元素的margin box的左边, 与包含块的左边缘相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此

④BFC的区域不会与float box重叠

⑤BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此

⑥计算BFC的高度时,浮动元素也参与计算

5.BFC的主要用途

5.1.清除元素内部浮动

①只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式

②计算BFC的高度时,自然也会检测浮动盒子的高度

5.2.解决外边合并问题

盒子垂直方向的距离由margin决定,属于同一个BFC的两个相邻盒子的margin会发生重叠

5.3.阻止元素被浮动元素覆盖

①BFC的区域不会与浮动盒子产生交集,而是紧贴浮动边缘

②普通流体元素BFC后,为了和浮动元素不产生任何交集,顺着浮动边缘形成自己的封闭上下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值