Подтвердить что ты не робот

Почему z-index игнорируется с позицией: static?

Смотрите этот комментарий из jquery-ui

// Ignore z-index if position is set to a value where z-index is ignored by the browser
// This makes behavior of this function consistent across browsers
// WebKit always returns auto if the element is positioned

Я вижу, что jquery zIndex() возвращает 0, если элемент position: static.

Не поддерживается ли z-индекс в позиции: static? (Он работает для меня в Chrome, не проверял кросс-браузер)

4b9b3361

Ответ 1

Потому что position: static означает "Игнорировать все инструкции позиционирования от left, top, z-index и т.д.".

'z-index'
Value:      auto | <integer> | inherit
Initial:    auto
Applies to:     positioned elements

- http://www.w3.org/TR/CSS21/visuren.html#z-index

Элемент называется позиционированным, если его свойство "position" имеет значение, отличное от "static".

- http://www.w3.org/TR/CSS21/visuren.html#positioned-element

Ответ 2

z-index не игнорируется для flex-элементов (непосредственные дочерние элементы flex-контейнера, элемента с display: flex или display: inline-flex) или grid-элементов (непосредственные дочерние элементы для grid-контейнера, элемента с display: grid или display: inline-grid).

Спецификации цитата

Из спецификации W3C Flexbox:

Элементы Flex рисуют точно так же, как и встроенные блоки CSS21, за исключением того, что order документа order -modified используется вместо порядка необработанного документа, а значения z-index отличные от auto создают контекст стека, даже если position static.

Из спецификаций W3C CSS Grid Layout:

Элементы сетки могут перекрываться, когда они расположены в пересекающихся областях сетки, или даже если они расположены в непересекающихся областях из-за отрицательных полей или позиционирования. Порядок рисования элементов сетки точно такой же, как и у встроенных блоков CSS21, за исключением того, что порядок документа order -modified используется вместо необработанного порядка документов, а значения z-index отличные от auto создают контекст стека, даже если position static ( ведет себя точно так, как если бы position было relative). Таким образом, свойство z-index можно легко использовать для управления порядком оси z элементов сетки.

Пример Flexbox

Итак, предположим, что у нас есть этот макет с перекрытием (.flex-item-two перекрывается .flex-item-one с использованием, например, отрицательных полей):

.flex {
  display: flex;
  align-items: center;
}

.flex-item-one {
  width: 100px;
  height: 100px;
  background-color: red;
  margin-right: -50px;
}

.flex-item-two {
  width: 200px;
  height: 200px;
  background-color: green;
}
<div class="flex">
  <div class="flex-item flex-item-one">One</div>
  <div class="flex-item flex-item-two">Two</div>
</div>