Кратко
СкопированоНаследование в CSS — это способность элементов-потомков перенимать правила форматирования (свойства CSS), которые присвоены их предкам.
Пример
Скопировано
<p style="color: red"> Весь <span>текст</span> в <em>этом</em> абзаце будет <b>красным</b>.</p>
<p style="color: red">
Весь <span>текст</span> в <em>этом</em> абзаце будет <b>красным</b>.
</p>
Как понять
СкопированоДля некоторых HTML-тегов предопределены особые CSS-свойства по умолчанию (их ещё называют user agent-стили или стили от браузера), которые характерны только для конкретно этих элементов, например, margin для <body>, color для ссылок или font для <b>. Их можно переопределить, но некоторые свойства (цвета текста, размера шрифта, внешнего вида курсора и другие) будут применяться для любых вложенных элементов, пока для них не будет указано иного значения. Такая наследуемость не случайна и обусловлена одним очень интересным CSS-значением у этих свойств — inherit, что буквально и значит «наследуемое».
Если у какого-то свойства указать значение inherit — оно будет взято у верхнего «родителя». Для некоторых CSS-свойств это значение указано по умолчанию.
Наследуемые свойства
Скопировано- Свойства шрифта:
fontи его «производных»:font,- style font,- variant font,- weight font,- stretch fontи- size font;- family colorиline.- height - Свойства межбуквенных и «межсловных» расстояний:
letter,- spacing wordи- spacing white.- space - Параметры текста:
text,- align text,- indent text,- shadow text;- transform - оформление пунктов списков:
list,- style list,- style - type list.- style - position - Внешний вид курсора:
cursorи отображение содержимого элементаvisibility.
Например, в отличие от color, который применится к подписи, ненаследуемое свойство border не будет применено к вложенным элементам:
<figure> <img src="doggo-up.svg"> <figcaption>Дока Дог</figcaption></figure>
<figure>
<img src="doggo-up.svg">
<figcaption>Дока Дог</figcaption>
</figure>
figure { border: 3px solid #18191c; color: blue;}
figure {
border: 3px solid #18191c;
color: blue;
}
Но если мы укажем у <img> свойство border как inherit (т. е. наследуемое):
img { border: inherit;}
img {
border: inherit;
}
Подсказки
Скопировано💡 Другой пример наследования — использование вместо указания цвета значения current, который равен цвету текста текущего элемента, т. е. значению свойства color. Если color текущего элемента равен inherit (т. е. наследует значение «родителя»), то и current также будет соответствовать текущему значению color «родителя». Причём это ключевое слово можно указывать в качестве значения для любого свойства, где значением является цвет, не только для color. См. раздел «На практике».
Значения rem и em — также частный случай наследования кратного размера текста («родителя», если указан em и корневого тега в случае с rem).
Полный список наследуемых по умолчанию CSS-свойств помечен в спецификации в колонке «Inherited?» значением yes.
Значение любого CSS-свойства можно «позаимствовать» (унаследовать) у родителя. Если «родителя» нет, inherit будет соответствовать значению по умолчанию для этого элемента.
На практике
Скопированосоветует
Скопировано🛠 Удобно делать всякие трюки, используя current. Мы не меняем явно цвет рамки по наведению курсора, но он меняется вслед за color.
<button class="magick-btn">Волшебная кнопка</button>
<button class="magick-btn">Волшебная кнопка</button>
.magick-btn { border: 2px solid; border-color: currentColor; border-radius: 6px; padding: 9px 15px; color: blue; background-color: transparent;}.magick-btn:hover { color: pink;}
.magick-btn {
border: 2px solid;
border-color: currentColor;
border-radius: 6px;
padding: 9px 15px;
color: blue;
background-color: transparent;
}
.magick-btn:hover {
color: pink;
}