← Все вопросы

z-index не работает, элемент всё равно под другим — почему?

Задан 16 месяцев назад671 просмотров3 ответа
13

Поставил элементу z-index: 9999, а он всё равно оказывается ПОД соседним блоком. Что я делаю не так?

3 ответа

24
✓ Принятый ответ — помог автору

99% случаев — у элемента не задан position. z-index работает только на позиционированных элементах (relative, absolute, fixed, sticky). У position: static (по умолчанию) z-index просто игнорируется.

.box {
  position: relative; /* без этого z-index не сработает */
  z-index: 10;
}

Вторая частая причина — контекст наложения (stacking context). Если родитель элемента имеет свой z-index (или opacity < 1, transform, filter), то твой z-index: 9999 соревнуется только внутри этого родителя. То есть ребёнок с z-index 9999 всё равно будет ниже соседнего блока, если родитель этого блока стоит выше. Тогда поднимать нужно родителя, а не сам элемент.

Дарья Епанова вот про stacking context от родителя — это то, на чём все спотыкаются · 16 месяцев назад
Artem Honcharov ещё transform: translateZ(0) у родителя неожиданно создаёт новый контекст · 15 месяцев назад
9

Скорее всего забыл position: relative. Без позиционирования z-index не действует.

-5

Просто поставь z-index побольше, например 99999.

Шамиль Ausc это не помогает — проблема обычно в отсутствии position или в stacking context родителя, число тут ни при чём · 16 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект