1. 定义:快级上下执行文,他是一个独立的渲染区域,只有Block-level box 参与,它规定了内部的Block-level box如何布局,并且于这个区域外部毫不相干。
2. 那些元素会生成BFC;
只要满足已上一点,将将会创建一个BFC
* float 属性不为none
* position为absolute或fixed
* display 为inline-block, table-cell,table-caption,flex,inline-flex
* overflow 不为 visible
3. BFC中盒子对齐
* 在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列
* 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)
4. 外边距折叠
* 常规流布局时,盒子都是垂直排列,两者之间的间距由各自的外边距所决定,但不是二者外边距之和
```
* 外边距折叠规则
```
* 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。
* 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值
* 两个外边距一正一负时,折叠结果是两者的相加的和。
5. 利用BFC避免外边距折叠
* BFC可能造成外边距折叠,也可以利用它来避免这种情况。BFC产生外边距折叠要满足一个条件:两个相邻元素要处于同一个BFC中。所以,**若两个相邻元素在不同的BFC中,就能避免外边距折叠**
```
<div class="container">
<p>Sibling 1</p>
<p>Sibling 2</p>
<div class="newBFC">
<p>Sibling 3</p>
</div>
</div>
对应的CSS:
.container {
background-color: red;
overflow: hidden; /* creates a block formatting context */
}
p {
margin: 10px 0;
background-color: lightgreen;
}
.newBFC {
overflow: hidden; /* creates new block formatting context */
}
```
6. BFC包含浮动
* 如果一个没有高度或者height是auto的容器的子元素是浮动元素,则该容器的高度是不会被撑开的。我们通常会利用伪元素(:after或者:before)来解决这个问题。BFC能包含浮动,也能解决容器高度不会被撑开的问题。
```
<div class="container">
<div>Sibling</div>
<div>Sibling</div>
</div>
.container {
overflow: hidden; /* 创建一个bfc */
background-color: green;
}
.container div {
float: left;
background-color: lightgreen;
margin: 10px;
}
```
- 怎么将元素水平垂直居中
- 实现元素水平居中
- position几个属性的作用
- px,em,rem的区别
- BFC
- box-sizing, transition, translate 分别是什么
- 选择器的优先级
- css3选择器有那些
- iframe的作用
- 导航栏在chrome中完好,在IE中有问题。
- CSS3新特性有那些
- xhtml和html的区别
- css引入方式有哪些,link和@import的区别是
- 标签上的title于alt属性的区别是什么
- css reset的作用和用途
- css sprites,如何使用
- 清除浮动的几种方式
- z-index的工作原理及适用范围
- 设计一套方案,适应不同的分辨率,有那些方法可以实现
- 渐渐增强和优雅降级的区别
- 改变元素的外边距用什么属性?改变元素的内填充用什么属性
- 在新窗口打开连接的方法是
- 页面布局中得而结构和表现分离,结构是什么?表现是什么
- 简述对web语义化的理解
- .html文件中的DOCTYPE是什么?有什么用
- css选择器的种类有几种?css选择器的优先级是怎么定义的
- display:none;与visibility:hidden;的区别是什么
- 文字溢出省略