принцип работы — учебник CSS
Позиционированные элементы можно наслаивать друг на друга при помощи CSS-свойства z-index
, тем самым имитируя третье измерение (ось Z, которая перпендикулярна экрану). Эффект можно сравнить со слоями в программе Adobe Photoshop — вы можете определять, какой элемент будет располагаться выше, а какой — ниже. Давайте подробнее разберем принцип работы z-index.
Как работает свойство z-index
Свойство z-index
имеет влияние лишь на позиционированные элементы, т. е. такие, для которых установлено свойство position
со значением absolute
, relative
либо fixed
. Влияние свойства z-index распространяется как на сам элемент, так и на его дочерние элементы, т. е. поднимая родительский элемент выше по оси Z, вы поднимаете и его дочерние элементы.
Если свойство z-index
не задано, то позиционированные элементы накладываются друг на друга в том порядке, в котором они находятся в коде HTML. Это значит, что если на странице есть три абсолютно позиционированных тега, то второй тег из HTML отобразится выше первого, а третий — выше первого и второго.
Ниже показано три примера: на первом скриншоте имеется три абсолютно позиционированных элемента <span>
без указания z-index
. Как следствие, элементы накладываются друг на друга в обычном порядке. На втором скриншоте добавлено свойство z-index: 1
к первому элементу <span>
. Как видим, порядок наложения изменился: теперь первый элемент расположен выше остальных. На третьем скриншоте показано, как можно добиться того же результата, но с применением z-index: 1
к родителю первого тега <span>
— тегу <div>
:
Значения z-index
Свойство z-index
принимает числовые значения — подходят целые числа (положительные, отрицательные, ноль). Чем больше число, тем выше находится элемент по оси Z. При равных значениях z-index элементы накладываются в порядке следования в HTML.
Значением свойства z-index по умолчанию является auto
.
Z-index и контекст наложения
Вышеописанная способность элементов изменять порядок наложения друг на друга с помощью свойства z-index
работает лишь в том случае, если эти элементы существуют в одном контексте наложения. Что это значит?
Контекст наложения (англ. stacking context) — это концепция трехмерного размещения HTML-элементов по оси Z, расположенной перпендикулярно экрану. Контекст наложения может быть сформирован любым элементом, который соответствует хотя бы одному из следующих условий:
- Элемент является корневым, т. е. существует в корневом контексте наложения. Любой элемент веб-страницы является таковым, если только он не присутствует в локальном контексте наложения (в том, который создается любым из способов ниже).
- Абсолютно позиционированный (position: absolute) либо относительно позиционированный (position: relative) элемент с любым значением
z-index
, кромеauto
. - Элемент со свойством
position: fixed
и любым значениемz-index
. - Элемент со свойством
display: flex
либоdisplay: inline-flex
и любым значениемz-index
, кромеauto
. - Элемент со свойством
opacity
и значением менее1
. - Элемент с любым значением свойства
transform
, кромеnone
. - Элемент с любым значением свойства
mix-blend-mode
, кромеnormal
. - Элемент с любым значением свойства
filter
, кромеnone
.
Итак, если соблюдать один из вышеперечисленных пунктов (применить к элементу позиционирование и
либо свойство opacity
со значением меньше единицы и т. п.), то формируется новый контекст наложения. Внутри контекста наложения дочерние элементы можно перемещать по оси Z в соответствии с обычными правилами.
Контекст наложения может являться частью другого контекста наложения, тем самым создавая своеобразную иерархию контекстов. Если внутри родителя дочерний элемент создает свой собственный контекст наложения, то значения z-index
будут учтены в пределах родителя. Элементы, которые не создают свой контекст наложения, используют родительский контекст наложения.
Один контекст наложения является полностью независимым от соседнего контекста. Это означает, что вы не можете, к примеру, наложить дочерний элемент А из одного контекста поверх дочернего элемента Б из другого контекста, если родитель элемента А находится ниже родителя элемента Б (подразумевается, что эти родители являются создателями разных контекстов).
Ниже показан пример того, как родительский элемент .d1
создает новый контекст наложения при добавлении к нему свойства opacity: 0.99
, после чего дочерний элемент
вновь становится нижним слоем, несмотря на свой z-index
:
Это происходит потому, что теперь свойство z-index
элемента . s1
работает в пределах контекста наложения своего родителя .d1
, тогда как другие два блока <div>
пока имеют корневой контекст наложения. Каким же образом снова разместить фиолетовый блок выше других, учитывая свойство прозрачности? Для этого необходимо позиционировать все блоки <div>
, после чего можно будет установить для них нужный порядок через z-index
:
В завершение
В начале урока мы сравнили принцип работы z-index
со слоями в Adobe Photoshop. После того, как вы узнали о контекстах наложения, имеет смысл вспомнить и о группах слоев в Фотошопе. Представьте себе, что элемент со свойством z-index — это слой, а контекст наложения — это группа слоев. Вы можете как угодно изменять порядок наложения слоев в пределах группы. Также вы можете менять порядок наложения самих групп. Однако вы не можете наложить определенный слой из нижней группы на слои верхней группы — разве что переместить наверх всю нижнюю группу либо извлечь нужный слой из этой группы.
В примитивном варианте свойство z-index работает просто: чем больше значение, тем выше находится элемент (слой). Но стоит только столкнуться с разными контекстами наложения (группами), как всё становится намного сложнее, и начинает казаться, что z-index не работает. Рекомендуем дополнительно попрактиковаться в данной теме: создайте различные контексты наложения, используя список выше, и понаблюдайте за тем, как ведут себя элементы с z-index в этих контекстах. А в качестве удобной ассоциации вспоминайте слои и группы Adobe Photoshop.
Далее в учебнике: скрытие элементов средствами CSS.
Z-index в CSS разбираем на типичных примерах
Свойство Z-index описывает уровень стека представления элемента на странице относительно остающихся в потоке элементов.
Его значением является число. Вместе с увеличением z-index элемента, близость к пользователю также увеличивается.
Пример кода Z-index
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. 0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> .logo { position:absolute; font-family:Century; font-size:2em; font-weight:bold; z-index:20; } #logo1 { left:50px; top:50px; color:#00f; } #logo2 { left:52px; top:52px; color:#f00; z-index:10; } .box { position:absolute; height:100px; width:100px; border:15px solid #000; } #box1 { left:150px; top:150px; border-color:#f00; z-index:40; } #box2 { left:185px; top:185px; border-color:#00f; z-index:30; } #box3 { left:185px; top:150px; border-color:#060; z-index:20; } #box4 { left:150px; top:185px; border-color:#f60; z-index:10; } </style> <title>CSS Z-Index</title> </head> <body> <h2>CSS Z-Index</h2> <div>Webucator</div> <div>Webucator</div> <div></div> <div></div> <div></div> <div></div> </body> </html>
Обратите внимание, как определенные элементы div расположены поверх других.
Display – когда применять?
Свойство display применяется для установки, должен ли элемент появиться на странице или нет. Самыми популярными значениями для этого элемента являются следующие:
- block
- inline
- none
Наиболее типичные примеры применения свойства display:
- Для показа и сокрытия элементов в зависимости от взаимодействия с пользователем. Частый пример – это ниспадающее меню. Такие динамические изменения стилей представлены значениями javascript.
- Чтобы скрыть элементы для определенных типов медиа. Например, можно «отключить» показ картинок, просто указав значение none для свойства display в таблице стилей, которая используется для печати документа
- Конвертация инлайновых элементов, таких как link, в блочные элементы при помощи изменения значения свойства display на block
Пример ниже демонстрирует, как свойство display может применяться для изменения ссылок в элементы block.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>CSS Link Buttons</title> <style type="text/css"> a { display:block; padding: 6px 4px; margin: 4px; border-right: 2px solid #999999; border-bottom: 2px solid #999999; border-top-width: 0px; border-left-width: 0px; background-color: #eaf1dd; color:#060; text-decoration:none; font-family:Verdana, Geneva, sans-serif; font-size:1.5em; } </style> </head> <body> <h2>Button Links</h2> <div> <a href="http://www.washingtonpost.com">WashingtonPost.com</a> <a href="http://www.webucator.com">Webucator</a> <a href="http://www.google.com">Google</a> </div> </body> </html>
Visibility (Видимость)
Свойство visibility применяется, когда вы хотите воздействовать на видимость элемента. Возможные значения этого свойства:
- visible
- hidden
Самое главное различие между visibility и hidden элемента состоит в том, что если указано значение hidden, то скрытый элемент по прежнему может влиять на раскладку вашей страницы. Элементы, у которых свойство display имеет значение none, такого эффекта не имеют.
[ads-pc-1]
[ads-mob-1]
Оцени статью
Средняя оценка 5 / 5. Количество голосов: 2
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Найти: СайдбарКомментарии (0)Z-индекс CSS
Свойство CSS z-index
используется для размещения элементов впереди или позади друг друга вдоль «оси z».
Это называется «уровень стека». Используя свойство z-index
, мы можем указать уровень стека блока в его текущем контексте стека.
Вообще говоря, вы можете расположить элемент перед другим, присвоив ему более высокий z-index
.
Например, элемент с z-индексом
из 200
будет отображаться перед элементом с z-индексом
из 100
(или даже 199
в этом отношении). Точно так же элемент 100
будет отображаться перед элементом, скажем, 50
(или даже 99
).
Свойство
применяется только к позиционированным элементам.
Синтаксис
z-индекс: авто | <целое число>
Возможные значения
-
авто
- Указывает, что уровень стека созданного блока в текущем контексте стека равен
0
. Блок не устанавливает новый контекст стека, если он не является корневым элементом. - целое число
- Указывает уровень стека созданного блока в текущем контексте стека. Коробка также устанавливает новый контекст стека.
Кроме того, все свойства CSS также принимают следующие значения ключевых слов CSS в качестве единственного компонента значения их свойства:
-
начальный
- Представляет значение, указанное как начальное значение свойства.
-
унаследовать
- Представляет вычисленное значение свойства родительского элемента.
-
снято с охраны
- Это значение действует как
inherit
илиinitial
, в зависимости от того, унаследовано свойство или нет. Другими словами, он устанавливает для всех свойств их родительские значения, если они наследуемые, или их начальные значения, если они не наследуемые.
Общая информация
- Исходное значение
-
авто
- Применяется к
- Позиционируемые элементы
- Унаследовано?
- №
- Медиа
- Визуальный
- Анимируемый
- Да (см. пример)
Пример кода
.меню { положение: абсолютное; верх: 10 пикселей; слева: 10 пикселей; z-индекс: 3; }
Официальные спецификации
- CSS Positioned Layout Module Level 3 (рабочий проект W3C, 17 мая 2016 г.)
- CSS Уровень 2.1 (Рекомендация W3C от 7 июня 2011 г.)
CSS — z-индекс
- Учебник CSS
- CSS — Главная
- CSS — Введение
- CSS — синтаксис
- CSS — Включение
- CSS — единицы измерения
- CSS — Цвета
- CSS — Фоны
- CSS — Шрифты
- CSS — текст
- CSS — изображения
- CSS — ссылки
- CSS — Столы
- CSS — границы
- CSS — поля
- CSS — списки
- CSS — набивка
- CSS — Курсоры
- CSS — контуры
- CSS — Размер
- CSS — полосы прокрутки
- Расширенный CSS
- CSS — Видимость
- CSS — Позиционирование
- CSS — Слои
- CSS — псевдоклассы
- CSS — псевдоэлементы
- CSS — @ правила
- CSS — текстовые эффекты
- CSS — типы носителей
- CSS — постраничный носитель
- CSS — слуховой носитель
- CSS — Печать
- CSS — Макеты
- CSS — проверки
- Учебное пособие по CSS3
- CSS3 — Учебник
- CSS3 — закругленный угол
- CSS3 — изображения границ
- CSS3 — многоцветный фон
- CSS3 — цвет
- CSS3 — Градиенты
- CSS3 — Тень
- CSS3 — текст
- CSS3 — веб-шрифт
- CSS3 — двумерное преобразование
- CSS3 — 3D-преобразование
- CSS3 — Анимация
- CSS3 — несколько столбцов
- CSS3 — пользовательский интерфейс
- CSS3 — Размер коробки
- Адаптивный CSS
- CSS — адаптивный веб-дизайн
- Ссылки CSS
- CSS — вопросы и ответы
- CSS — Краткое руководство
- CSS — Ссылки
- CSS — Цветовые ссылки
- CSS — ссылки на веб-браузер
- CSS — веб-безопасные шрифты
- CSS — шт.
- CSS — Анимация
- Инструменты CSS
- Преобразователь CSS — PX в EM
- CSS — выбор цвета и анимация
- Ресурсы CSS
- CSS — полезные ресурсы
- CSS — Обсуждение
- Выбранное чтение
- Примечания к экзаменам UPSC IAS
- Передовой опыт разработчиков
- Вопросы и ответы
- Эффективное составление резюме
- HR Вопросы на собеседовании
- Компьютерный глоссарий
- Кто есть кто
Предыдущая страница
Следующая страница
Описание
Z-индекс устанавливает уровень наложения элемента.
Возможные значения
авто — Уровень стека элемента такой же, как и у его родительского элемента.
целое число — Уровень стека элемента устанавливается на заданное значение, и он устанавливает новый контекст стека для любых элементов-потомков.