簡體   English   中英

使用浮點數時,保證金無效

[英]Margin doesn't work when working with floats

我有3個div彼此疊放。 全部具有相同的寬度和高度,例如500px x 500px。

頂部div向右浮動。 第二個左邊距和右邊距設為自動。 第3個浮點向左。 全部具有相同的50px頂部空白,並且全部清除:兩者。

當然,有一個包裝器div包裹着3個div,寬度為100%。

問題:為什么第二個div的上邊距不推動該50px的邊距,但與頂部div重疊?

我曾嘗試在此處尋找類似問題的答案,但我所尋找的都不是。

這是我正在執行的html和CSS的示例。

<!DOCTYPE html>
<html>
<head>
<style>
.wrapper{width:100%; clear:both;}
.haha{width:500px; height:500px; margin-top:50px; clear:both;}
.haha.right{float:right;}
.haha.left{float:left}
.haha.center{margin-left:auto; margin-right:auto;}
</style>
</head>
<body>
<div class="wrapper">
<div class="haha right"><img src="wahaha.jpg"></div>
<div class="haha center"><img src="wahaha.jpg"></div>
<div class="haha left"><img src="wahaha.jpg"></div>
</div>
</body>
</html>

JS小提琴在這里http://jsfiddle.net/dhS2x/3/

您可以通過向.haha.right類中添加以下內容來獲得所需的效果:

margin-bottom:50px;

至於為什么發生這種情況,這與以下事實有關:中間div沒有浮動,而其他div在浮動。

我知道這很臟。 但是您可以通過在每個.haha div之后添加單獨的清除div來實現此目的,如下所示。

<div class="wrapper">
<div class="haha right"><img src="wahaha.jpg"></div>
    <div class="clear"></div>
<div class="haha center"><img src="wahaha.jpg"></div>
    <div class="clear"></div>
<div class="haha left"><img src="wahaha.jpg"></div>
    <div class="clear"></div>
</div>

和CSS

.clear{clear:both;}

JS小提琴http://jsfiddle.net/Q4u6P/1/

根據W3C: http : //www.w3.org/TR/CSS2/visuren.html#floats

由於沒有浮子,因此在浮子盒之前和之后創建的未定位塊盒將垂直流動,就好像該浮子不存在一樣。

如果我的解釋是正確的,則第二個div的頂部邊距在那里,但設置在包裝容器的邊緣或其上方的任何非浮動元素的邊緣,這是由於考慮到浮動元素已從包裝容器的正常流程中取出文獻。

如果要在div1和div2之間設置垂直間距,請改為在div1上設置margin-bottom。

#div1{
    float: right; 
    margin-bottom: 50px;/*set margin here instead*/
}

JSFiddle: http : //jsfiddle.net/luongatoolz/DxDmp/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM