Возьмите этот тривиальный пример и откройте его:
<html>
<body style="background-image:url(http://upload.wikimedia.org/wikipedia/commons/2/21/Mandel_zoom_00_mandelbrot_set.jpg);background-repeat: no-repeat; background-position: top center;">
<div style="width: 8000px; border: 3px solid red;">Demo</div>
</body>
</html>
Страница сделана таким образом, что тело имеет фоновое изображение с центром в верхней части и содержащий элемент, который выходит за границы окна, что обеспечивает горизонтальную прокрутку (если у вас монитор шире, чем 8000 пикселей, тогда вы действительно круты, пожалуйста окно меньше и обнови).
Проблема в том, что по какой-то причине <body>
не растягивается, чтобы содержать <div>
. Он просто остается той же ширины, что и окно просмотра, и <div>
переполняет его. Это, в свою очередь, приводит к центру фона в неправильном месте и обрезает его до размера области просмотра. Довольно ужасно, когда вы прокручиваете вправо.
Я уже нашел решение этой проблемы, но мне интересно, ПОЧЕМУ это так? Кажется, это одинаково для всех браузеров. Но, на мой взгляд, это довольно нелогично и в основном просто неправильно . Элемент контейнера должен быть достаточно большим, чтобы содержать его дочерние элементы - если, конечно, они не расположены абсолютно, и в этом случае они не участвуют в вычислениях макета.