初步理解BFC

看完上一篇转载文章对BFC内容有了初步的了解,但还有诸多不明白的地方:

基本定义:

1:普通的overflow:visible块级盒子是不会创建BFC的
2:对于浮动元素,绝对定位元素,非块级元素的块级容器,和具有overflow属性但不是默认值的块级盒子的内容会创建BFC


BFC中的元素的布局是不受外界的影响(我们往往利用这个特性来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响。通过清除外界影响,而达到相当于清除浮动的目的)


动手实验,对BFC内容的疑问:


通过创建BFC,确实消除了兄弟浮动元素对该元素的影响,但是创建BFC的方式不同,所达到的效果也不同,不过他们确实都清除了浮动的影响


比如:

<html>                                                                       
	<head>                                                                   
		<title>css浮动测试</title>                                               
		<meta charset="UTF-8"/>                                              
		<style type="text/css">                                              
				.box {width:210px;border: 1px solid #000;}                   
.img {width: 100px;height: 100px;background: #696;float: left;}              
.info {background: #ccc;color: #fff;}                                        
p{margin: 0;overflow: auto;}                                                 
		</style>                                                             
	</head>                                                                  
	<body>                                                                   
                                                                             
<div class="box">                                                            
    <div class="img">image</div>                                             
    <p class="info">信息信息信息信息                                                 
    	信息信息信息信息信息信息信息信信息信                                                   
    	息信息信息信息信息信息信息信信息信息信息信息信息信息信息信息信</p>                                  
</div>                                                                       
		                                                                     
	</body>                                                                  
</html>                                                                      


原本P标签是在图片的下面的,因为图像的辅导,导致浮动元素占据了行框的空间,而P元素则是在图片的下面,内容则是被浮动元素挤到了旁边。



当我用overflow:hidden(非visible即可);创建BFC的时候, P标签是从图片右边开始,而不是在图片下面开始,当父元素宽度不够时,一样在右边显示


当用float:的方式创建BFC的时候,一样清除了浮动的影响,只是因为父元素宽度不够,P元素往下放了,实际上这种BFC清除浮动的效果又与浮动的内容重合了,不建议这种方式清除,因为它会产生新的浮动问题


当用display:inline-block(非块级元素的块级容器)方式清除浮动:当父元素宽度不足时, 该元素会显示在下方,宽度够时,因为inline-block原因,所以排列在右边。这里可以看出inline-block这个属性值,与其说同时具备行元素特点和块级元素特点,倒不如说,它时而作为块元素。时而具备行,块级元素特点




但有一个不明确的是,当overflow:hidden的时候,为什么P标签会在右边开始,而不是下面?假设我对P标签定义了clear:both,它会显示在下面。那么问题来了,overflow:hidden通过创建BFC方式清除浮动与clear清除浮动之间有什么细微的差别??
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值