CSS清除浮动的BFC方式

总结:浮动问题产生的原因是float成为了BFC区域,脱离了文档流。

一、何为BFC

       BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。

二、形成BFC的条件

      1、浮动元素,float 除 none 以外的值; 
      2、定位元素,position(absolute,fixed); 
      3、display 为以下其中之一的值 inline-block,table-cell,table-caption; 
      4、overflow 除了 visible 以外的值(hidden,auto,scroll);

三、BFC的重要特性
      1.bfc的区域不会与float的元素区域重叠。
      2.计算bfc的高度时,浮动元素也参与计算

一、父子问题

有一个元素是float,成为了BFC区域,脱离了文档流,而父元素还在文档流里,计算高度的时候不会把BFC区域计算进去。所以浮动元素的子元素无法把父元素的div撑开。

解决方案是把父元素也变成BFC区域,这样就会把子元素的高度计算进去。

<div class="father">
    <div class="son">
    </div>
</div>
.father{
    overflow:hidden;
    width:800px;
    border:20px red;
}
.son{
    float:left;
    width:400px;
    height:200px;
    border:20px black;
}

二、兄弟问题

正常情况下,文档流里的元素会环绕着float的元素。有的时候,不希望有环绕效果。

<div class="fa">
	<div class="son">
	</div>
	<span>你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好
       你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好
       你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好                    
    </span>
</div>
.fa{
	width:600px;
	overflow: hidden;
	border: 20px solid red;
}
.son{
    float:left;
    width:400px;
    height:100px;
    border:20px solid black;

}

为了使span不环绕着浮动元素,需要把span变成BFC区域,也就是在span中设置overflow:hidden,但是span是行内元素,BFC的前提是块级元素,所以还需要设置display:block。(如果是<p>这样的块级元素,就不用设置display)

.fa{
	width:600px;
	overflow: hidden;
	border: 20px solid red;
}
.son{
    float:left;
    width:400px;
    height:100px;
    border:20px solid black;

}
span{
	overflow: hidden;
	display: block;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值