2014-07-03 45 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?奇迹般有效! –