清除浮动、BFC规范

今天天气不是很好,上网刷新闻时,突然想起页面布局里面浮动的相关知识,故有了本文。

**

1. BFC规范

**
BFC(Box Formatting Context,块级格式化上下文)是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之,外面的元素也不会影响容器里面的元素,也就是形成了一个独立的渲染区域。
Q1:如何创建BFC?
方法1:float的值不是none;
方法2:position的值不是static或者relative,也就是position的值是fixed或者absolute;
方法3:display的值是inline-block、flex或者inline-flex;
方法4:overflow不是visible,为 auto、scroll或者hidden,最常用的还是overflow:hidden。
Q2:BFC的布局规则
(1)内部盒子会在垂直方向,一个接一个地放置。
(2)Box垂直方向的距离由margin决定,如果属于同一个BFC的两个相邻Box的margin会发生重叠。
(3)每个盒子的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
(4)BFC的区域不会与float box重叠。
(5)计算BFC的高度时,浮动元素也参与计算。
Q3:形成BFC的作用?
(1)形成独立的渲染区域;
(2)取消盒子的margin塌陷问题;
(3)阻止元素被浮动元素覆盖。

2. 清除浮动

页面的浮动一定要封闭在一个盒子中,否则就会对页面后续的元素产生影响。
清除浮动方法大体上有四种:

  1. 让内部有浮动的盒子形成BFC
    常用的方法是overflow:hidden。原因是使用float或者position方式清除浮动,虽然父级盒子内部浮动被清除了,但是父级本身又脱离文档流了,会对父级后面的兄弟盒子的布局造成影响。

  2. 给后面的父盒子设置clear:both属性
    clear表示清除浮动对自己的影响,both表示左右浮动都清除。

  3. 使用伪元素::after
    使用::after伪元素给盒子添加最后一个子元素,并且给::after设置clear:both。

  4. 设置“隔墙”
    在两个父盒子之间“隔墙”,隔一个携带clear:both的盒子。

<div class="box1">
   <p>test</p>
</div>
<div></div> //"隔墙",在此盒子上设置clear:both
<div class="box2">
   <p>test</p>
</div>

最后补一个面试常出的手写clearfix吧

.clearfix:after {
	content: '';
	display: table; /* block */
	clear: both;
}
.clearfix {
	*zoom: 1 /*兼容IE低版本*/
}

纠结:after还是::after 请移步至此
本文是一位仍在学习路上的中国青年随手而作,有错误欢迎指正,期待与诸位一起学习进步~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值