Ответ 1
По HTML 4.01 в элементе p
, <p></p>
действителен, но не должен использоваться, и браузеры должны его игнорировать. Поведение браузера противоречиво и обычно не соответствует спецификации. Вы проверяете это с помощью <hr><hr><p></p><hr>
, например - в Chrome, это показывает, что хотя элемент p
имеет нулевую высоту, он имеет верхнее и нижнее поля, поэтому он влияет на рендеринг, т.е. Не игнорируется. - HTML5 CR, похоже, не знает об этой проблеме, то есть не говорит ничего конкретного об элементе p
с пустым контентом. Обновление: HTML5 содержит общую инструкцию об элементах с фразовым контентом в режиме содержимого (например, p
): такой элемент должен содержать "должен иметь либо по крайней мере один потомок Text node, который не является межэлементным пробелом, либо, по крайней мере, одним элементом-потомком node, который является встроенным контентом". Это означает, что <p></p>
не следует использовать; но это рекомендация, а не требование соответствия ( "должно", а не "должно" ).
Эффект <p> </p>
равен undefined спецификацией (рендеринг символа пробела без пробела не определен), но браузеры обычно рассматривают пространство без прерывания как еще один графический символ, который просто происходит с визуализироваться с помощью пустого глифа. Поэтому на практике он генерирует строку с высотой, определяемой вычисленным значением line-height
.
По умолчанию существуют поля между элементами p
, соответствующими одной пустой строке. Поэтому любая потребность в пустой строке между элементами p
, по-видимому, вызвана переопределением стиля по умолчанию, чем-то вроде p { margin: 0 }
в CSS. Чтобы переопределить это, следует использовать дополнительный CSS, а не искусственный элемент p
. То есть некоторые элементы p
должны иметь подходящий ненулевой нижний или верхний край.
HTML 4.01 определяет символы пробела как относящиеся к пространству Ascii, вкладке Ascii, фиду формы Ascii и пространству нулевой ширины (таким образом, не к no -break space), определяет их рендеринг и добавляет: "В этой спецификации не указывается поведение, визуализация или иное, пробелов, отличных от тех, которые явно указаны здесь как символы пробела. По этой причине авторы должны использовать соответствующие элементы и стили для достижения визуальных эффектов форматирования, которые включают пробел, а не символы пространства."