2014-07-03 86 views
3

我有兩個單獨的DIV s一個position : fixed爲通知欄,一個爲主容器,當我給container一些margin-top,這也推我的通知欄!獨立元素的邊界如何影響固定元素的位置?

這裏是一個小提琴:http://jsfiddle.net/Zh9k8/2/

而且,我知道我能堅持到與top : 0頁面頂部,但我想知道爲什麼它會發生。

+0

嗯,夠奇怪的,如果你扔在那裏
,它實際上將分裂的數據,像這樣:http://jsfiddle.net/Zh9k8/3/ – BuddhistBeast

+0

這些元素被放置在身體以及,對嗎? – BuddhistBeast

+0

@BuddhistBeast是的。怎麼樣?你的意思是保證金是要父母的元素? – Webinan

回答

4

造成塌陷的利潤率普遍的問題:http://www.w3.org/TR/CSS21/box.html#collapsing-margins

解決方法是不使用保證金,而是創造空間的另一種方式。你可以頂邊距添加到.container和刪除保證金:

http://jsfiddle.net/Zh9k8/4/

的在流塊元素的上邊距崩潰,其第一 在流動塊級的孩子的上邊距,如果該元素沒有頂部 邊框,沒有頂部填充,並且孩子沒有通關。

如果元素的邊距與父元素的頂部邊距一起摺疊,則 方塊的頂部邊緣邊緣定義爲與父親的 相同。

非常混淆的術語,但它描述了到底發生了什麼。

+0

這很好,爲什麼固定格沒有創建自動換行符?放置一個標籤後,邊距不會影響到固定元素的位置......我在說你的答案是正確的,我只是好奇自動休息時發生了什麼。 – BuddhistBeast

+0

因爲根據定義,固定的定位元素完全從文檔流中移除 - 其周圍的所有其他元素的行爲就好像它不在那裏一樣。 – Adam

+0

+1對於固定位置的良好定義,我很難找到這些信息。那麼在所有的本質上,如果你添加了break標籤,那麼就像填充填充一樣簡單。 – BuddhistBeast

1

您仍然可以使用邊距來創建空間。如果您在body上設置了最小填充量,它將消除固定塊的邊距塌陷。查看更新的小提琴:http://jsfiddle.net/BMCc9/

body { 
    padding: 0.1px; 
} 
+0

似乎威武的「哈克」,但什麼不在CSS?奇蹟般有效! –