foundation
Inheritance
Знайте, какие свойства наследуются, и как initial, inherit, unset, revert и custom properties проходят по дереву.
Inheritance передаёт выбранные свойства от родителя к потомку. Текстовые свойства (color, font-family, line-height) часто наследуются; layout (margin, width, display) — обычно нет. Custom properties наследуются по умолчанию, если не зарегистрированы иначе.
Ключевые слова сброса управляют повторным входом в cascade:
- `inherit` — computed value родителя
- `initial` — значение по спецификации
- `unset` — inherit, если свойство наследуемое, иначе initial
- `revert` — уровень user-agent stylesheet
- `revert-layer` — откат внутри текущего @layer
.card {
--card-bg: var(--surface, #fff);
color: var(--text-primary);
}
.card--danger {
--card-bg: var(--danger-surface);
color: inherit;
}
На интервью: почему color наследуется, а margin нет, и как custom properties пересекают границы компонентов для темизации.
Компромисс: удобная темизация через наследование против случайной утечки стилей через границы компонентов.
Типовые ошибки: предположение что всё наследуется ломает layout; агрессивный reset убирает полезные стили форм и focus от user agent.
Чеклист:
- Знайте наследуемые и ненаследуемые семейства свойств.
- Reset keywords — осознанно.
- Custom properties с semantic именами.
- Избегайте широкого разрушительного reset.