У меня есть div
с позиционированием по умолчанию (т.е. position:static
) и div
с fixed
позицией.
Если я установлю z-индексы элементов, кажется невозможным заставить фиксированный элемент идти позади статического элемента.
#over {
width: 600px;
z-index: 10;
}
#under {
position: fixed;
top: 5px;
width: 420px;
left: 20px;
border: 1px solid;
height: 10%;
background: #fff;
z-index: 1;
}
<!DOCTYPE html>
<html>
<body>
<div id="over">
Hello Hello HelloHelloHelloHelloHello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
</div>
<div id="under">
</div>
</body>
</html>
Или на jsfiddle здесь: http://jsfiddle.net/mhFxf/
Я могу обойти это, используя
position:absolute
статический элемент, но кто-нибудь может сказать мне, почему это происходит?
(Похоже, что этот вопрос похож на этот вопрос, ( Fixed Positioning нарушает z-index ), но он не имеет удовлетворительного ответа, поэтому я задаю этот вопрос здесь с моим примером кода)
Добавить
position: relative;
в #overскрипка
источник
</body>
и дополнительный тег</html>
.position: relative
из-за элемента фактически исправило мою проблему.г-индекс работает только в определенном контексте , т.е.
relative
,fixed
илиabsolute
положение.z-индекс для относительного div не имеет ничего общего с
z-index
абсолютным или фиксированным div.РЕДАКТИРОВАТЬ
Это неполный ответ.Этот ответ предоставляет ложную информацию. Пожалуйста, просмотрите комментарий @ Dansingerman и пример ниже.источник
поскольку у вашего
over
div нет позиционирования, z-index не знает, где и как его позиционировать (и относительно чего?). Просто измените положение вашего подчиненного элемента на относительное, чтобы на него не было побочных эффектов, и тогда подчиненный подчинится вашей воле.Вот ваш пример на jsfiddle: Fiddle
редактировать : я вижу, кто-то уже упоминал этот ответ!
источник
Дайте
#under
отрицательныйz-index
, например-1
Это происходит потому, что
z-index
свойство игнорируетсяposition: static;
, что является значением по умолчанию; поэтому в коде CSS, который вы написали,z-index
это1
для обоих элементов, независимо от того, как высоко вы его установили#over
.Давая
#under
отрицательное значение, то это будет позади любойz-index: 1;
элемент, то есть#over
.источник
Я строил навигационное меню. У меня есть
overflow: hidden
в CSS моего nav, который спрятал все. Я думал, что это была проблема с z-index, но на самом деле я прятал все за пределами своей навигации.источник
в соответствии с разделом «Перекрывающиеся элементы» на http://web.archive.org/web/20130501103219/http://w3schools.com/css/css_positioning.asp
источник
поведение фиксированных элементов (и абсолютных элементов), как определено в CSS Spec:
Это делает вычисление zindex немного сложным, я решил свою проблему (та же ситуация), динамически создавая контейнер в элементе body и перемещая все такие элементы (которые классифицируются как «my-fixed-ones» внутри этого элемента уровня тела) )
источник