Перекрывающийся абсолютно позиционированный контент
-
18-09-2019 - |
Вопрос
У меня возникли небольшие трудности с эта страница.Это ПОЧТИ работает правильно.
Красная рамка должна располагаться по центру (h & v) окна.РАБОТАЕТ.
Желтая рамка должна быть прикреплена к нижней части окна.РАБОТАЕТ.
Когда высота окна составляет менее 400 пикселей, должны появиться полосы прокрутки и желтое поле в нижней части области прокрутки. В принципе, я никогда не хочу, чтобы желтое поле появлялось поверх красного, или наоборот.НЕ РАБОТАЕТ
Кто-нибудь знает, как я могу этого добиться?
Спасибо.
Решение
Добавьте это в CSS для #wrapper
:
height: 100%;
position: relative;
Причина, по которой это работает, заключается в том, что ваши абсолютно позиционированные элементы расположены относительно окна просмотра из-за отсутствия каких-либо других содержащий блок.Путем добавления position: relative
к тому #wrapper
(или тот body
если уж на то пошло) вы убедитесь, что вместо этого содержащий блок становится всем содержимым основного текста.
В height: 100%
затем это необходимо только для того, чтобы убедиться, что содержащий блок, по крайней мере, достигает нижней части окна просмотра.
Другие советы
#footer{z-index: 1000;}
#logo{z-index: 1001;}
z-индекс - это то, что вам нужно.хотя 1000 - это немного чрезмерно, простой
#footer{ z-index:2; }
#logo{ z-index:3; }
сделал бы свое дело
Полезно помнить об этом, не уточняя z-index
, элементы складываются с последним элементом 'highest' в z-порядке.Итак, если вы хотели избежать указания z-index
, перевернуть html:
<body>
<div id="wrapper">
<div id="footer">
This is the footer. It should always appear at the bottom of the page, but not over the red box.
</div>
<div id="logo">
<h1>Logo</h1>
</div>
</div>
</body>
В противном случае, как следует из другого ответа, указав большее число для #logo
чем для #footer
вызовет #logo
чтобы быть выше.
Для принудительного использования полос прокрутки, когда окно просмотра порта < 400 пикселей,
#wrapper {
min-width: 400px;
min-height: 400px;
overflow: scroll; /* or overflow: auto */
}
Z-Индекс здесь не является фактором.Z-Index по-прежнему позволит элементам перекрываться - он будет только определять, какой элемент находится сверху.
Используйте плаватьing элемент после красного div в потоке документов, а затем использование Очистить на желтом, чтобы создать связь между элементами (т.е.желтый div будет Очистить красный и не будет перекрываться).
Размещение элемента относительно большого размера (например, высота:100%) между ними желтый div переместится в нижнюю часть экрана, но правильное выравнивание по вертикали может оказаться сложным.