Евгений
16 июля в 00:26
10
CSS. Наследование свойств
Какие свойства наследуются, а какие нет?
Наследование свойств в CSS — это фундаментальный механизм, который определяет, как стили передаются от родительских элементов к дочерним.
1. Что такое наследование?
Наследование — это процесс, при котором дочерние элементы автоматически получают значения CSS-свойств от своих родительских элементов, если для них не заданы собственные стили.
<div style="color: red; font-size: 20px;"> Родитель <p>Дочерний элемент — тоже красный и крупный</p> </div>
Здесь <p> унаследует color: red и font-size: 20px, если ему не заданы свои значения.
2. Какие свойства наследуются, а какие — нет?
Наследуемые свойства:
| Тип | Свойства |
|---|---|
| Текст и шрифты | color, font-family, font-size, font-weight, font-style, line-height, text-align, letter-spacing, word-spacing |
| Списки | list-style-type, list-style-position |
| Видимость | visibility |
| Курсор | cursor |
| Направление текста | direction |
| Межстрочный интервал | white-space |
Ненаследуемые свойства:
| Тип | Свойства |
|---|---|
| Блочная модель | width, height, margin, padding, border |
| Позиционирование | position, top, left, z-index |
| Фоны | background (+ все его под-свойства) |
| Отображение | display |
| Переполнение | overflow |
| Границы и тени | box-shadow, outline |
3. Управление наследованием
Есть четыре ключевых слова, которые управляют наследованием (inherit, initial, unset, revert):
| Значение | Действие |
|---|---|
| inherit | Принудительно наследует значение родительского элемента |
| initial | Устанавливает значение по умолчанию (из спецификации браузера) |
| unset | Для наследуемых свойств работает как inherit, для ненаследуемых — как initial |
| revert | Сбрасывает значение к стилю пользовательского агента (браузера) |
Примеры:
/* Принудительное наследование даже для ненаследуемых свойств */
.child {
border: inherit; /* наследует border от родителя */
}
/* Сброс к значению по умолчанию */
p {
color: initial; /* цвет станет чёрным (браузерный default) */
}
/* Универсальный сброс */
div {
all: unset; /* сбрасывает все свойства */
}4. Специальное свойство all
Позволяет одним махом управлять наследованием для всех свойств элемента:
.element {
all: inherit; /* наследует все свойства */
all: initial; /* все свойства по умолчанию */
all: unset; /* наследуемые наследуются, остальные сбрасываются */
all: revert; /* браузерные стили */
}6. Важные нюансы
- Наследование работает только от родителя → потомку, никогда наоборот.
- Расчётные значения — наследуется не исходное значение, а вычисленное (например, font-size: 2em — наследуется уже посчитанное значение в пикселях).
- Встроенные стили имеют наивысший приоритет, но !important может перебить и их.
- Некоторые свойства наследуются не полностью, а по частям (например, background не наследуется, но background-color можно наследовать отдельно).