Влияет ли display:block у body на span в CSS
Есть код:
<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>
Будет ли display:block у body влиять на span?
Теория: наследование и display
В CSS у каждого свойства есть правило наследования: часть свойств по умолчанию передаётся от родителя к потомкам (например, color), а часть — нет (например, многие свойства, влияющие на тип и поведение CSS-бокса).
Свойство display относится к тем, которые не наследуются: если родителю задано display: block, это не означает, что дочерние элементы возьмут то же значение.
Если у элемента (например, у span) не задан display, он использует собственное значение из каскада/начального значения/стилей браузера, а не «копирует» display родителя.
span в блочный элемент без отдельного правила.Разбор данного 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>
display: block у body влияет на отображение самого body (то, как он формирует свой бокс и участвует в форматировании страницы).span при этом остаётся со своим типом отображения (обычно inline), потому что значение display от body к нему не передаётся по наследованию.
Чтобы span стал блочным, правило с display должно примениться к самому span (напрямую или через селектор).
Упрощённая схема идеи:
body (display: block) --x--> div (display: своё)
|
+----> span (display: своё)
Значок x означает: по наследованию значение display не передаётся.
Примеры, которые снимают вопрос
Пример A: значение display у body не делает span блочным:
body { display: block; }
Пример B: span становится блочным только при явном правиле для span:
body { display: block; }
span { display: block; }
Пример C: если требуется «взять значение как у родителя», это делается явно на самом элементе через inherit:
span { display: inherit; }
Таблица для запоминания:
| Свойство | Наследуется по умолчанию | Практический смысл |
|---|---|---|
display | Нет | display родителя не меняет display потомка автоматически |
color | Да (типичный пример) | Цвет текста часто переходит к вложенному тексту, если не переопределён |
Итого: правильный вариант — 2) «Не будет», потому что display не наследуется, а значит display: block у body не меняет span автоматически.