Селекторы атрибутов CSS: правила для кавычек (", 'или нет?)

Этот вопрос беспокоит меня уже некоторое время. При написании селектора CSS, который сравнивается с атрибутом элемента, вот так.

a[rel="nofollow"]

Я никогда не знаю, что мне делать с кавычками. Они действительно необходимы?

По сути, какова спецификация для этого, потому что я не могу найти его на веб-сайте.

Все ли это считается действительным?

a[rel="nofollow"]
a[rel='nofollow']
a[rel=nofollow]

2 ответа

Решение

Я написал более подробно на эту тему здесь: Значения атрибутов без кавычек в HTML и CSS.

Я также создал инструмент, который поможет вам ответить на ваш вопрос: http://mothereff.in/unquoted-attributes

Средство проверки значения атрибута без кавычек

Вы можете обычно опускать кавычки, пока значение атрибута является буквенно-цифровым (однако, есть некоторые исключения - см. Связанную статью для всех деталей). Во всяком случае, я считаю хорошей практикой добавлять цитаты в любом случае, если они вам нужны, т.е. a[href^=http://] не сработает, но a[href^="http://"] будут.

В статье я упомянул ссылки на соответствующие главы в спецификации CSS.

Значения атрибута должны быть идентификаторами или строками

- http://www.w3.org/TR/CSS2/selector.html

Первые два используют строки. Третий использует идентификатор.

идентификаторы (включая имена элементов, классы и идентификаторы в селекторах) могут содержать только символы [a-zA-Z0-9] и символы ISO 10646 U+00A0 и выше, плюс дефис (-) и символ подчеркивания (_); они не могут начинаться с цифры, двух дефисов или дефиса, за которым следует цифра.

- http://www.w3.org/TR/CSS2/syndata.html

Строки могут быть записаны в двойных или одинарных кавычках.

- http://www.w3.org/TR/CSS2/syndata.html

Другие вопросы по тегам