CSS:为什么在此示例中,固定元素NOT不在页面顶部开始?

tru*_*ktr 0 html css html5 stylesheet

这个例子中,为什么固定的#header(在顶部)不是从页面顶部开始,但在这个例子中呢?

唯一的区别是我将#content的"margin"改为"padding"而不是(repsectively).

那么为什么这个微小的变化会产生巨大的影响呢?如何将固定的#header放在页面顶部,同时仍然为#content使用"margin"?

thi*_*dot 6

这是因为利润率下降.

如果框的顶部和底部边距相邻,则边距可能会通过它折叠.在这种情况下,元素的位置取决于其与边缘正在折叠的其他元素的关系.

在这种情况下,除非你给它一个非默认值的值,否则margin可以按下#header(有position: fixed).topauto

解决这个问题的方法是添加overflow: hidden#wrapper:http://jsfiddle.net/CyaJ8/6/

这是因为:

建立新块格式化上下文的元素的边距(例如浮点数和"溢出"除"可见"之外的元素)不会因其流入的子节点而崩溃.