проблема chrome / safari: <p>содержит 2 скрытых <span>, каждый из которых содержит <div>, но отображается 1-й - PullRequest
0 голосов
/ 21 февраля 2011

Следующий фрагмент отлично работает в FF / IE (ничего не отображается), но в chrome / safari отображается 1-й диапазон!

<p>
    <span style = "display:none"><div>inner</div></span>
    <span style = "display:none"><div>inner</div></span>
</p>

Кто-нибудь с объяснением?

Ответы [ 2 ]

6 голосов
/ 21 февраля 2011

Модель содержимого span (что она может содержать) имеет значение формулировка содержимого . Элемент div не является фразировкой контента, это поток контента.У вас не может быть действительного div внутри span, и поэтому то, что делает браузер, когда видит, будет зависеть от реализации.

Для подобных вещей служба валидатора W3Cудобно.Например, вот пример запроса службы валидатора для проверки этой страницы :

<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<p><span><div>foo</div></span></p>
</body>

... где валидатор совершенно правильно жалуется на различные вещи.

2 голосов
/ 21 февраля 2011

Не следует размещать элемент уровня блока, например div, внутри встроенного элемента, например span. Если вы посмотрите на сгенерированный источник страницы, то увидите, что первый div завершает span и поэтому не скрыт. Почему это не происходит со вторым - мне неведомо.

Просто помните, что вложение элемента блока во встроенный элемент приведет к непредвиденному поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...