Является ли пустой атрибут class
допустимым HTML в следующих форматах:
<p class="">something</p>
<p class>something</p>
Я нашел этот вопрос, который похож, но задает конкретно о пользовательских атрибутах данных.
Является ли пустой атрибут class
допустимым HTML в следующих форматах:
<p class="">something</p>
<p class>something</p>
Я нашел этот вопрос, который похож, но задает конкретно о пользовательских атрибутах данных.
Изучив спецификации, упомянутые в других ответах, я нашел разделы, которые действительно отвечают на поднятый вопрос.
<p class>
не разрешеноспецификация атрибутов, раздел 3.2.3.1 о синтаксисе пустых атрибутов, содержит следующее:
Пустым атрибутом является тот, где значение было опущено. Это синтаксическая стенограмма для указания атрибута с пустым значением и обычно используется для логических атрибутов. Этот синтаксис может использоваться в синтаксисе HTML, но не в синтаксисе XHTML.
(...)
Этот синтаксис разрешен только для логических атрибутов.
Увидев, что описание атрибута атрибута class (очевидно) не упоминает, что он является логическим атрибутом, опускание значения не разрешено.
<p class="">
разрешеноИз раздела в классе мы узнаем, что:
Каждый элемент HTML может иметь указанный атрибут класса.
Атрибут, если он задан, должен иметь значение, представляющее собой набор разделенных пространством токенов, представляющих различные классы, к которым принадлежит элемент.
и из определения разделенных пробелами токенов:
Набор разделенных пространством токенов - это строка, содержащая ноль или несколько слов (называемых токенами), разделенных одним или несколькими символами пробела, где слова состоят из любой строки из одного или нескольких символов, ни один из которых не является символами пробела.
мы можем заключить, что значение атрибута может быть пустым (т.е. содержать нулевые токены).
На странице справки HTML5, раздел 3.2.3 Атрибуты:
Элементы могут иметь атрибуты, которые используются для указания дополнительной информации о них. Некоторые атрибуты определяются глобально и могут использоваться для любого элемента HTML, тогда как другие определяются только для определенных элементов. Каждый атрибут должен иметь имя атрибута, которое используется для его идентификации. Каждый атрибут также имеет связанное значение атрибута, которое, в зависимости от определения атрибута, может представлять собой один из нескольких разных типов. Разрешенный синтаксис для каждого атрибута зависит от заданного значения.
Итак, чтобы ответить на ваш вопрос,
Invalid:
<p class>
Действительное (пустое значение)
<p class="">
См. http://dev.w3.org/html5/html-author/ Для справки относительно HTML5 вам нужно.
Отсутствие каких-либо значений не сделает его недействительным. Я тестировал его в http://validator.w3.org/#validate_by_input
Поместите этот код и проверьте:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div class>Validiity
<input type="text" disabled>
</div>
</body>
</html>
Без кавычек просто имена атрибутов создаются для логического атрибута типа disabled
, required
В число атрибутов входят логические атрибуты. Наличие логического атрибута для элемента представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Подробнее здесь: https://html.spec.whatwg.org/#boolean-attributes
Прочтите этот вопрос Q/A при обсуждении логических атрибутов - Что это означает в HTML 5, когда атрибут является логическим атрибутом?
Класс должен содержать значение. без значения его недействительным. но он не влияет на рендеринг.