В общем следующее относится ко всем attributes:
Если не указано иное, атрибуты HTML элементов может иметь любое строковое значение, включая пустую строку.
Это действует, чтобы иметь в HTML5 пустой class
attribute:
атрибуте, если указано, должно иметь значение, которое является множество разделенных пробелами лексем, представляющих различные классы, что элемент принадлежит.
set of space-separated tokens определяется как:
Набор разделенных пробелами маркеров является строкой, содержащей ноль или более слова (известные как маркеры), разделенные одним или несколькими пробелами, где слова состоят из любой строки из одного или нескольких символов, ни один из которых не является символами пробела.
Таким образом, вы можете иметь атрибут class
, содержащий нулевые маркеры:
<div class="">This should be valid.</div>
Вы могли omit the value, тоже:
Пустой атрибут синтаксиса
Просто имя атрибута. Значение неявно является пустой строкой.
Таким образом, вы можете иметь атрибут class
без значения (что равно значение с пустой строкой):
<div class>This should be valid.</div>
В CSS можно выбрать эти элементы с:
[class] {color:red;} /* would select all elements with the class attribute, no matter which value */
[class=""] {color:red;} /* would select only elements with empty or no value */
[class|=""] {color:red;} /* would select elements that have an empty class value, no class value or a class value beginning with "-" */
Просто потому, что возможно, возможно, иногда, чтобы выбрать использование пустого селектора, что не делает его даже близким к хорошей идее, в спецификации говорится: «Атрибут , если указано, должно иметь значение, которое представляет собой набор разделенных пространством токенов, представляющих различные классы, к которым принадлежит элемент. », то есть все, что работает, просто удачи и в конечном итоге сломается. – blankabout
@blankabout Правда, но интересно, что он работает во всех основных браузерах и, кажется, больше, чем просто удача. – Arbel
Очень интересно. Я проверил и поиграл с этим, прежде чем задал вопрос. Что может быть причиной этого? Вы видите какую-нибудь полезную реализацию? @Arbel подробно изложит ваш ответ, и я помету его, как ответ. – Aaron