Почему z-индекс не работает?
Так что если я понимаю z-index
правильно, было бы идеально в этой ситуации:
Я хочу поместить нижнее изображение (тег/карту) ниже div над ним. Так что вы не можете видеть острые края. Как мне это сделать?
z-index:-1 // on the image tag/card
или
z-index:100 // on the div above
не работает. Как и сочетание чего-либо подобного. Как же так?
5 ответов:
The
z-index
свойство работает только на элементы сposition
значениеstatic
(например,position: absolute;
,position: relative;
илиposition: fixed
).есть еще
position: sticky;
который поддерживается в Firefox, имеет префикс в Safari, работал некоторое время в более старых версиях Chrome под пользовательским флагом и рассматривается Microsoft для добавления в свой браузер Edge.
элементы должны иметь атрибут "позиция". (например, абсолютный, относительный, фиксированный) или Z-индекс не будет работать
если вы установите положение в другое значение, чем
static
но все еще не работает, может быть, какой-то родительский элемент имеетz-index
set.контексты укладки имеют иерархию, и каждый контекст укладки рассматривается в порядке укладки родительского контекста укладки.
так что со следующим html
div { border: 2px solid #000; width: 100px; height: 30px; margin: 10px; position: relative; background-color: #FFF; } #el3 { background-color: #F0F; width: 100px; height: 60px; top: -50px; }
<div id="el1" style="z-index: 5"></div> <div id="el2" style="z-index: 3"> <div id="el3" style="z-index: 8"></div> </div>
независимо от того, насколько большой
z-index
наel3
будет установлен, он будет всегда быть подel1
потому что это родитель имеет более низкий контекст стекирования. Вы можете представить себе порядок укладки в виде уровней, где порядок укладкиel3
на самом деле 3.8 что ниже, чем 5.если вы хотите проверить контекст стекирования родительских элементов, вы можете использовать это:
var el = document.getElementById("#yourElement"); // or use in chrome; do { var styles = window.getComputedStyle(el); console.log(styles.zIndex, el); } while(el.parentElement && (el = el.parentElement));
во многих случаях элемент должен быть расположен на
z-index
на работу.действительно, применяя
position: relative
к элементам в вопросе, скорее всего, решит проблему (но там не достаточно кода, чтобы знать наверняка).на самом деле
position: fixed
,position: absolute
иposition: sticky
позволитz-index
, но эти значения также изменить макет. Сposition: relative
макет не беспокоить.по существу, пока элемент не
position: static
(по умолчанию установка) считается позиционированной иz-index
будет работать.
много ответов на " почему z-индекс не работает?" вопросы утверждать, что
z-index
только работает на позиционированных элементах. По состоянию на CSS3, это уже не так.элементов гибкий график работы пунктов или элементы сетки можно использовать
z-index
, даже еслиposition
isstatic
.от характеристики:
элементы Flex рисуют точно так же, как встроенные блоки, за исключением того, что порядок изменения документа используется вместо raw порядок документов, и
z-index
значенияauto
создать контекст стекирования, даже еслиposition
иstatic
.5.4. Упорядочение по оси Z: The
z-index
собственностьпорядок рисования элементов сетки точно такой же, как и встроенные блоки, за исключением того, что порядок изменения документа используется вместо исходного порядка документов, и
z-index
значенияauto
создать контекст укладки, даже еслиposition
иstatic
.вот демонстрация
z-index
работа на не-расположенных деталях гибкого трубопровода:https://jsfiddle.net/m0wddwxs/