Наследуется ли font-weight от body к span в HTML
Есть HTML код:
<html>
<head>
<title>CSS test 2</title>
</head>
<body style="color: red; font-weight: bold; display: block; background: url('bg.jpg');">
<div>
Some test text
<div>
Lorem ipsum etc..
<span>
One more dummy text
</span>
</div>
</div>
</body>
</html>
Будет ли font-weight на span влиять?
Теория: наследование font-weight
Свойство font-weight является наследуемым: если для элемента не задано значение, оно берётся (наследуется) из вычисленного значения родителя.
Следовательно, span, находящийся внутри body, получит полужирное начертание, так как у body задано font-weight: bold, а у span в данном HTML не задано альтернативное значение font-weight.
font-weight относится к оформлению текста, поэтому при отсутствии переопределений ожидается одинаковая жирность у текста всех потомков внутри элемента, где font-weight задан явно.Механика применения в CSS выглядит так: сначала для элемента ищется «заданное значение» свойства по каскаду (правила автора, пользователя, браузера), и только если значения нет — применяется наследование.
Поэтому наследование — это резервный механизм: если бы у span было собственное значение font-weight (например, normal), оно бы перекрыло унаследованное значение от body.
Разбор исходного кода
Имеется стиль на body: color: red; font-weight: bold; display: block; background: url('bg.jpg');.
Из этих свойств color и font-weight по умолчанию наследуются, а, например, background и display — обычно нет, поэтому они не «переезжают» на дочерние элементы через наследование.
Внутри body находится span, и у него в разметке нет атрибута style и нет CSS-правил, задающих font-weight.
Значит, для span будет использовано унаследованное значение font-weight от ближайшего предка (в итоге от body через цепочку div), то есть bold.
Схема наследования в данном фрагменте (упрощённо):
html
└─ body (font-weight: bold)
└─ div
└─ div
└─ span (font-weight: наследуется → bold)
Примеры и таблица
Пример 1. Исходный фрагмент (ключевой эффект — span станет полужирным):
<html>
<head>
<title>CSS test 2</title>
</head>
<body style="color: red; font-weight: bold; display: block; background: url('bg.jpg');">
<div>
Some test text
<div>
Lorem ipsum etc..
<span>
One more dummy text
</span>
</div>
</div>
</body>
</html>
Пример 2. Явное переопределение на span (полужирность пропадёт, так как наследование не будет применяться):
<html>
<body style="font-weight: bold;">
<span style="font-weight: normal;">
Этот текст станет обычным
</span>
</body>
</html>
Пример 3. Явное указание наследования (эффект совпадёт с исходным, но становится «самодокументируемым»):
<html>
<body style="font-weight: bold;">
<span style="font-weight: inherit;">
Этот текст будет полужирным
</span>
</body>
</html>
Пример 4. Относительные значения bolder/lighter зависят от веса шрифта родителя, то есть тоже привязаны к родительскому значению font-weight:
<html>
<body style="font-weight: 700;">
<span style="font-weight: lighter;">
Этот текст станет легче, чем родитель
</span>
</body>
</html>
| Свойство | Что делает | Наследуется по умолчанию | Что будет со span в задаче |
|---|---|---|---|
font-weight | Толщина/жирность шрифта | Да | Будет bold (унаследуется от body) |
color | Цвет текста | Да | Будет красным (унаследуется от body) |
border | Граница элемента | Нет | Не появится из-за родителя |
Кратко: font-weight: bold, заданный на body, будет влиять на span, потому что font-weight наследуется, и у span нет собственного значения этого свойства.