Это из-за сворачивающихся полей .
Если верхнее и нижнее поля бокса соприкасаются, значит, поля могут разрушаться через него.В этом случае положение элемента зависит от его связи с другими элементами, поля которых свернуты.
В этом случае margin
может оттолкнуть #header
(который имеетposition: fixed
), если вы не укажете top
значение, отличное от значения по умолчанию auto
.
Чтобы исправить это, добавьте overflow: hidden
к #wrapper
: http://jsfiddle.net/CyaJ8/6/
Это работает, потому что:
Поля элементов, которые устанавливают новые контексты форматирования блока (такие как плавающие элементы и элементы с «переполнением», отличным от «видимого» * 1025 *), не сворачиваютсясо своими детьми в потоке.