W3C валидатор не любит самозакрывающиеся тег (те , которые заканчиваются " />
«) на Непустых элементах. (Пустые элементы - это те, которые могут никогда не содержать никакого содержимого.) Они все еще действительны в HTML5?
Некоторые примеры допустимых пустых элементов:
<br />
<img src="" />
<input type="text" name="username" />
Некоторые примеры отклоненных не пустых элементов:
<div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />
Примечание:
валидатор W3C фактически принимает пустые самозакрывающиеся теги: у автора изначально возникла проблема из-за простой опечатки ( \>
вместо />
); однако самозакрывающиеся теги не являются на 100% допустимыми в целом в HTML5, и ответы на них подробно раскрывают вопрос о самозакрывающихся тегах в различных вариантах HTML.
html
syntax
w3c-validation
Ardent Coder
источник
источник
\>
, он должен быть закрыт как бесполезный вопрос «исправьте мою опечатку». Ответы все адреса/>
./>
Версия является полезным. Будь как будет.Ответы:
В HTML 4 ,
<foo /
(да, с не>
совсем) средств<foo>
(что приводит к<br />
означая<br>>
(то есть<br>>
) , и это<title/hello/
означает<title>hello</title>
). Это правило SGML, которое браузеры очень плохо поддерживали, и спецификация рекомендует авторам избегать синтаксиса .В XHTML ,
<foo />
значит<foo></foo>
. Это правило XML, которое применяется ко всем документам XML. Тем не менее, XHTML часто служит тем,text/html
который (по крайней мере, исторически) обрабатывается браузерами, использующими другой синтаксический анализатор, чем документыapplication/xhtml+xml
. W3C предоставляет рекомендации по совместимости для XHTML astext/html
. (По сути: используйте синтаксис самозакрывающегося тега только тогда, когда элемент определен как EMPTY (а конечный тег был запрещен в спецификации HTML)).В HTML5 значение
<foo />
зависит от типа элемента .источник
<object data="..." />
и<img src="..."></src>
не все в порядке, хотя<object data="..."></object>
и<img src="..." />
есть, что затрудняет согласованность инструментов. Это похоже на ситуацию проигрыша.text/html
браузеры не придают особого значения слешу, поэтому включение его не имеет практического значения. Это только для того, чтобы он выглядел больше как XML для людей, которые не могут выйти из привычки.<img ...></img>
вместо<img ...>
или<img ... />
). Поскольку HTML5 в целом менее строгий (возможно, из-за сбоя XHTML), он вполне мог бы допустить что-то подобное<img ...></img>
. К сожалению, это не так, поэтому генератору шаблонов на основе XML нужно знать, как отличить создание пустых элементов или самозакрывающихся элементов: у вас даже не может быть одного правила, чтобы написать все пустые элементы как<tag></tag>
.</br>
как<br>
это<br></br>
было бы двойным разрывом строки. (и обратная совместимость с плохой разметкой в реальном мире (как</br>
) является одной из целей разработки HTML 5).Как отметил Никита Скворцов, самозакрывающийся div не будет проверяться. Это потому, что div - это обычный элемент , а не элемент void .
В соответствии со спецификацией HTML5 , теги, которые не могут иметь никакого содержимого (известные как элементы void ), могут быть самозакрывающимися *. Это включает в себя следующие теги:
«/» Является совершенно необязательным для вышеуказанных тегов, однако
<img/>
не отличается от него<img>
, но<img></img>
является недействительным.* Примечание: посторонние элементы также могут быть самозакрывающимися, но я не думаю, что это относится к этому ответу.
источник
/
было включено, но это не гарантируется (это зависит от того, насколько эффективно браузер переписывает код для вас и интерпретирует его так, как вы предполагали). Кроме того, если По какой-то причине ваша страница должна пройти проверку HTML 5, она может не пройти, если вы закроете теги для пустых элементов.На практике использование самозакрывающихся тегов в HTML должно работать так, как вы ожидаете. Но если вы беспокоитесь о написании правильного HTML5, вы должны понимать, как использование таких тегов ведет себя в двух разных синтаксических формах, которые вы можете использовать. HTML5 определяет как синтаксис HTML, так и синтаксис XHTML, которые похожи, но не идентичны. Какой из них использовать, зависит от типа носителя, отправляемого веб-сервером.
Скорее всего, ваши страницы обслуживаются
text/html
, что соответствует более мягкому синтаксису HTML. В этих случаях HTML5 позволяет определенным начальным тегам иметь дополнительный / до его завершения>. В этих случаях / является необязательным и игнорируется, поэтому<hr>
и<hr />
идентичны. Спецификация HTML называет эти «пустые элементы» и предоставляет список допустимых. Строго говоря, необязательный / действителен только в начальных тегах этих пустых элементов; например,<br />
и<hr />
действительны HTML5, но<p />
это не так.Спецификация HTML5 проводит четкое различие между тем, что является правильным для авторов HTML и для разработчиков веб-браузеров, поскольку вторая группа обязана принимать все виды недопустимого «унаследованного» синтаксиса. В этом случае это означает, что HTML5-совместимые браузеры будут принимать недопустимые самозакрывающиеся теги, например
<p />
, и отображать их так, как вы, вероятно, ожидаете. Но для автора эта страница не будет действительной HTML5. ( Что еще более важно, дерево DOM , вы получаете от использования этого вида незаконного синтаксиса может быть серьезно облажалось, сами-замкнутыми<span />
метки, например, как правило, натворить много ).(В необычном случае, когда ваш сервер знает, как отправлять файлы XHTML как тип MIME XML, страница должна соответствовать синтаксису DTD и XML XHTML. Это означает, что для тех элементов, которые определены как таковые, требуются самозакрывающиеся теги .)
источник
HTML5 в основном ведет себя так, как будто косой черты нет. В синтаксисе HTML5 нет такого понятия, как самозакрывающийся тег.
Самозакрывающиеся теги на таких элементах, как void
<p/>
,<div/>
вообще не будут работать. Конечный слеш будет игнорироваться, и они будут рассматриваться как открывающие теги. Это может привести к проблемам с вложением.Это верно независимо от того, есть ли пробел перед косой чертой:
<p />
и<div />
также не будет работать по той же причине.Самозакрывающиеся теги на пустых элементах, такие как
<br/>
или<img src="" alt=""/>
будут работать, но только потому, что завершающий слеш игнорируется, и в этом случае это приводит к правильному поведению.В результате все, что работало в вашем старом «XHTML 1.0, использовавшемся как text / html», продолжит работать так же, как и раньше: конечные слеши на не пустых тегах также не были приняты, тогда как конечный слеш на пустых элементах работал.
Еще одно замечание: документ HTML5 можно представить в виде XML, и его иногда называют «XHTML 5.0». В этом случае применяются правила XML, и самозакрывающиеся теги всегда будут обрабатываться. Это всегда должно быть подано с типом mime XML.
источник
Самозакрывающиеся теги действительны в HTML5, но не обязательны.
<br>
и<br />
оба в порядке.источник
/>
) не может использоваться для не пустого HTML-элемента.<p/>
или<div/>
.<... />
как в XHTML, или вам нужно удалить/
в HTML5. Вопрос менялся несколько раз после.Я был бы очень осторожен с самозакрывающимися тегами, поскольку этот пример демонстрирует:
Мое чувство кишки было бы
<span></span><span></span>
вместоисточник
On other [than void] HTML elements, the slash is an error, but error recovery will cause browsers to ignore it and treat the tag as a regular start tag. This will usually end up with a missing end tag causing subsequent elements to be children instead of siblings.
Однако - только для записи - это неверно:
И косая черта здесь сделает его снова действительным:
источник