清除浮动元素的margin-top失效原因(更改之前的错误)

 

//样式代码
body,div
{ margin:0; padding:0; } .box1{ background:#900; width:200px; height:200px; margin:20px 0 0 20px; float:left; } .box2{ background:#009; width:300px; height:200px; margin:20px 0 0 20px; float:left; } .box3{ background:#099; width:520px; height:200px; margin:20px 0 0 20px; clear:left; }
//html中的代码
<
div class="box1"></div> <div class="box2"></div> <div class="box3"></div>

 在所有的浏览器中都是如下图所示,box3的margin-top失效

 

原因:查找clear属性是如何清除浮动的

clear 属性定义了元素的哪边上不允许出现浮动元素。在 CSS1 和 CSS2 中,这是通过自动为清除元素(即设置了 clear 属性的元素)增加上外边距实现的。在 CSS2.1 中,会在元素上外边距之上增加清除空间,而外边距本身并不改变。不论哪一种改变,最终结果都一样,如果声明为左边或右边清除,会使元素的上外边框边界刚好在该边上浮动元素的下外边距边界之下。摘自 w3school 

当clear应用于非浮动块时,它将元素的边框边界移动到所有相关浮动元素外边界的下方。这个行为作用时会导致外边距折叠不起作用。摘自MDN

当clear应用于浮动元素时,它将元素的外边界移动到所有相关的浮动元素外边界的下方。这会影响后面浮动元素的布局,后面的浮动元素的位置无法高于它之前的元素

代码如下:

<div class="box1">box1</div>  
<div class="box2">box2</div>  
<div class="box3">box3</div>  
body,div{  
    margin:0;  
    padding:0;  
    font-size: 20px;
    font-weight: bold;
}  
.box1{  
    background:#900;  
    width:200px;  
    height:200px;  
    margin:20px 0 0 20px;  
    float:left;  
}  
.box2{  
    background:#009;  
    width:300px;  
    height:200px;  
    margin:20px 0 0px 20px;  
    float:left; 
    clear:left;  /*清除浮动元素*/ 
}  
.box3{  
    background:#099;  
    width:520px;  
    height:200px;  
    margin:20px 0 0 20px;  
    float:left;  
} 

 

转载于:https://www.cnblogs.com/AliceX-J/p/4919642.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值