Я просто читал HTML-код, который никогда не закрывал теги мета и ссылок в разделе заголовка HTML. Код работал нормально; закрывает эти теги необязательно?
Я думал, что это будет неверно, если тег не был закрыт.
Я просто читал HTML-код, который никогда не закрывал теги мета и ссылок в разделе заголовка HTML. Код работал нормально; закрывает эти теги необязательно?
Я думал, что это будет неверно, если тег не был закрыт.
Тег всегда должен быть закрыт символом закрытия тега >
(если мы игнорируем определенные правила SGML, которые номинально применяются в не-XHTML HTML, но никогда не были реализованы в браузерах).
Вы хотите спросить, нужно ли закрывать элементы конечными тегами. Ответ заключается в том, что не-XHTML HTML (включая HTML5 в сериализации HTML) конечный тег не требуется или не разрешен для элементов meta
и link
. Однако на практике браузеры просто игнорируют явные конечные теги для них, а также cargo-cult /
before >
, если вы их используете. А HTML5 делает эту вседозволенность правилом, даже формально разрешая /
в сериализации HTML тоже.
В XHTML применяются правила XML, поэтому каждый элемент без исключения должен иметь как начальный тег, так и конечный тег, но один и тот же тег может использоваться для обеих ролей, если содержимое элемента пустое, например, <meta name="foo" content="bar"/>
как сокращение от <meta name="foo" content="bar"></meta>
. Если вы нарушаете это при подаче документа с типом содержимого XML (XHTML) в соответствующий браузер, то ваш документ вообще не отображается; вместо этого отображается сообщение об ошибке.
При использовании сервера XHTML с типом содержимого HTML (Content-Type: text/html
), поскольку документы XHTML почти всегда находятся в Интернете, браузеры фактически применяют правила HTML, отличные от XHTML.
Подвести итоги:
<meta...>
без /
<meta.../>
, сделайте это; это бесполезно, но не причиняет вреда (кроме случаев, когда вы пытаетесь проверить, например, в соответствии с типом документа HTML 4.01).Это зависит от типа doctype. HTML5 не требует закрытия. XHTML делает.
В HTML5 так называемые элементы void (элементы, которые не могут иметь контент) не нуждаются в закрытии, поскольку они самозакрываются. Но это все еще актуально, если вы их закроете.
Подробнее об этом читайте здесь: void-elements