Любые позиционированные элементы на веб-странице могут накладываться друг на друга в определенном порядке, имитируя тем самым третье измерение, перпендикулярное экрану. Каждый элемент может находиться как ниже, так и выше других объектов веб-страницы, их размещением по z-оси и управляет z-index . Это свойство работает только для элементов, у которых значение position задано как absolute , fixed или relative .
z-index: число | auto | inherit
В качестве значения используются целые числа (положительные, отрицательные и ноль). Чем больше значение, тем выше находится элемент по сравнению с теми элементами, у которых оно меньше. При равном значении z-index , на переднем плане находится тот элемент, который в коде HTML описан ниже. Хотя спецификация и разрешает использовать отрицательные значения z-index , но такие элементы не отображаются в браузере Firefox до версии 2.0 включительно.
Кроме числовых значений применяется auto — порядок элементов в этом случае строится автоматически, исходя из их положения в коде HTML и принадлежности к родителю, поскольку дочерние элементы имеют тот же номер, что их родительский элемент. Значение inherit указывает, что оно наследуется у родителя.
HTML5 CSS2.1 IE Cr Op Sa Fx
Слой 1 наверху
Слой 4 наверху
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства z-index
document.getElementById("elementID ").style.zIndex
Список, созданный с помощью тега
Internet Explorer до версии 7.0 включительно не поддерживает значение inherit и интерпретирует auto как 0.
В браузере Firefox до версии 2.0 включительно отрицательное значение z-index располагает элемент ниже фона веб-страницы и его контента.
Здравствуйте, уважаемые читатели блога сайт! Время от времени я позволяю себе добавлять материалы в копилку и сегодня мы поговорим о свойстве z-index, которое влияет на позиционирование элементов на вебстранице.
Надо понимать, что данное правило работает только в отношении позиционированных тегов, для которых прописано свойство . То есть для стандартного потока документа (где позиционирование не задано или его параметр определен как static) оно действовать не будет. Ниже я продемонстрирую работу z-index на конкретном примере.
Итак, для каждого элемента в CSS находится свое место на вебстранице в соответствии с прописанными для него стилями. Местоположение всех блоков относительно друг друга определяется с помощью системы координат.
В общем случае точка отсчета находится в левом верхнем углу области просмотра (окна браузера). При этом оси X и Y определяют местоположение элементов в плоскости экрана монитора. А вот ось Z, как вы, наверное, догадались, позволяет смоделировать уже пространственную систему координат.
Она расположена перпендикулярно плоскости, образованной X и Y, и направлена прямо на нас. Само собой разумеется, что точкой отсчета по оси Z является ноль. В нулевой точке расположены все статические элементы, для которых определено свойство position static (нормальное позиционирование).
По умолчанию, если position вовсе не прописан, то такая ситуация абсолютно равнозначна той, как если бы был указан параметр static. В этом случае отображение всех HTML элементов страницы происходит в стандартном потоке. Таким образом, position, как, например, и float (в о создании плавающих элементов в CSS информация) дает возможность изменять обычный вариант очередности для решения специальных задач верстки.
Несмотря на то, что для статических вебэлементов значение z равно нулю, то есть они располагаются в плоскости X-Y, для них определены правила в том случае, если они начинают наезжать друг на друга.
Основное правило гласит: вебэлемент, определяемый тегом, который расположен ниже в HTML коде страницы, будет находится ближе к нам. То есть он будет перекрывать сверху блок, код которого находится выше.
А вот явно позиционированные (динамические) элементы (со значениями relative, absolute, fixed) находятся выше всех статических. В отношениях между динамическими вэбэлементами будет действовать все тот же закон: тот, что расположен ниже в коде, находится ближе к нам (выше других).
Вот здесь и может сказать решающее слово свойство z-index . Чем больше его значение в числовом выражении, тем выше будет находиться соответствующий элемент вебстраницы. Но все это работает, как я уже сказал, только в отношении элементов с абсолютным (absolute), относительным (relative) или фиксированным (fixed) позиционированием. Синтаксис параметров z-index является следующим:
Z-index: число|auto|inherit
Числовые значения могут быть какими угодно: как отрицательными, так и положительными, включая ноль . Параметр auto предопределяет автоматический порядок расположения вэбэлементов в соответствии с их очередностью в коде HTML, учитывая принадлежность к родителю. Значение inherit показывает, что z-index у родительских.
Теперь настало время направить наши изыскания в практическое русло, чтобы подтвердить теоретические выкладки. Я возьму для примера три относительно позиционированных (с указанным свойством position: relative). Для наглядности пропишу для каждого цветовой оттенок, рамку, а также укажу отступы слева (left) и сверху (top), ширину (width) и высоту (height):
На вебстранице после интерпретации HTML кода браузером эти три блока будут выглядеть так:
Обратите внимание, что контейнеры располагаются в полном соответствии с озвученным выше правилом: нижний синий перекрывает располагающийся чуть выше красный и тот, в свою очередь, находящийся еще выше зеленый. А теперь добавим свойство z-index со значением 1 красному блоку:
Картина изменится:
Как видим, получает преимущество красный контейнер и он теперь находится выше других. Далее попробуем добавить z-index уже зеленому блоку, но уже со значением 2:
Результат будет таким:
Совершенно очевидно, что теперь выше прочих находится зеленый контейнер, который получил наибольшее значение z-index. Таким образом, все приведенные вначале рассуждения полностью подтверждены практическими опытами. Главное помнить, что свойство z-index работает только с явно позиционированными вебэлементами.
Z-index: auto |
Пример: зелёный с z-index: 2; находится под красным z-index: 1; только когда имеет значение по умолчанию.
z-index: 2; static relative absolute fixed
z-index: 1; static relative absolute fixed
[Пример интерактивный, следует переключать кнопки]
Вложенные элементы отображаются над родителем. Единственный способ поместить дочерний тег ниже родителя — присвоить ему отрицательный z-index .
Примеры использования:
Рассматриваются как z-index: 0; . Если дополнительно задать position не static и z-index не auto , то положение измениться в соответствии с последними свойствами CSS.
Примечание: IE 6-7 рассматривает значение auto как 0 и всем position не static создаёт контекст наложения.
Свойство CSS z-index определяет порядок элементов, когда они накладываются друг на друга при позиционировании. То есть с помощью него можно указать, какой элемент (слой) будет находиться сверху, а какие (и в каком порядке) под ним.
Но тут не все так просто. Это свойство является в CSS одним из тех немногих, которые осуществляют сразу две совершенно разные функции (как, например, position):
Давайте рассмотрим такой пример:
В этом примере при любых числовых значениях z-index у вас получится поменять местами только DIV3 и DIV4. А вот не получится следующее:
В разных учебниках и справочниках понятие «Уровень упорядочивания» называют по разному - локальный позиционный контекст, локальный контекст стека и т.д. В официальной спецификации CSS оно пишется так - «local stacking context». Но на мой взгляд словосочетание «уровень упорядочивания» ближе к пониманию для большинства русскоговорящих людей, поэтому я и ввел это определение.
Назначение: позиционирование .
Применяется: к элементам с position отличным от static.
Наследуется: нет.
Значением свойства z-index является указание порядка элементов одним из следующих способов.
Процентная запись: не существует.
Значение по умолчанию: auto.
Так как внутри элемента создающего уровень упорядочивания могут быть не только позиционированные элементы, но и какие-то другие, то браузеры используют определенный правила их наслоения в пределах данного уровня:
z-index: auto | число | inherit
Пример CSS: использование z-index
Результат.
Версия: | CSS 1 | CSS 2 | CSS 2.1 | CSS 3 |
Поддержка: | Да | Да | Да | Да |
Браузер: | Internet Explorer | Google Chrome | Mozilla Firefox | Opera | |||
Версия: | 6.0 и 7.0 | 8.0 и выше | 2.0 и выше | 2.0 | 3.0 и выше | 9.2 и выше | 3.1 и выше |
Поддержка: | Частично | Да | Да | Частично | Да | Да | Да |
Internet Explorer 6.0 и 7.0 не понимают значение inherit . Также в этих браузерах новые уровни упорядочивания создают вообще все позиционированные элементы, а не только имеющие числовые значения z-index .
IE 6.0 всегда располагает элемент
Firefox 2.0 укладывает элементы с отрицательными значениями z-index под фон и рамку элемента, который создал данный уровень упорядочивания. Другими словами он меняет местами пункты 1 и 2 в правилах наслоения.
The z-index CSS property sets the z-order of a positioned element and its descendants or flex items. Overlapping elements with a larger z-index cover those with a smaller one.
The source for this interactive example is stored in a GitHub repository. If you"d like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
For a positioned box (that is, one with any position other than static), the z-index property specifies:
The z-index property is specified as either the keyword or an .
Specification | Status | Comment |
---|---|---|
CSS Transitions The definition of "animation behavior for z-index" in that specification. |
Working Draft | Defines z-index as animatable. |
CSS Level 2 (Revision 1) The definition of "z-index" in that specification. |
Recommendation | Initial definition |
Initial value | auto |
---|---|
Applies to | positioned elements |
Inherited | no |
Media | visual |
Computed value | as specified |
Animation type | an CSS data type are interpolated via integer discrete steps. The calculation is done as if they were real, floating-point numbers and the discrete value is obtained using the floor function.">integer |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Creates stacking context | yes |
The compatibility table in this page is generated from structured data. If you"d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet | |
z-index | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 4 | Safari Full support 1 | ||||||
Negative values | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 3 | IE Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |