Какие символы широко поддерживаются в именах классов CSS?

Как детализировано здесь среди других мест, единственные допустимые символы в имени класса html/css являются a-z, A-Z, 0-9, дефисом и подчеркиванием, и первый символ должен быть буквой. Но на практике, какие символы на самом деле поддерживаются большинством браузеров? Строго говоря, интересно, какие браузеры правильно понимает наклонную черту (/) в имени класса, и какие браузеры поддерживают имена классов, запускающиеся с числа.

Я, прежде всего, интересуюсь получением ответа для HTML, а не xhtml, в случае, если существует различие.

Спасибо.

12
задан Community 23 May 2017 в 12:01
поделиться

4 ответа

Обратите внимание, что имена классов определяются HTML, а не CSS. HTML4 говорит , что атрибут class является cdata-list , который представляет собой токены, разделенные пробелами. Таким образом, один токен имени класса может содержать любой символ, кроме символов пробела.

Интересно, какие браузеры правильно понимают косую черту (/) в имени класса и какие браузеры поддерживают имена классов, начинающиеся с числа.

Чтобы ссылаться на такие имена в селекторе классов CSS, вам нужно использовать escape-последовательность. Например: [

<div class="1blah/bläh">

] соответствует:

.\31 blah\2F bläh { ... }

Это поддерживается всеми текущими браузерами .Он не поддерживался IE5, но, к счастью, это больше не проблема. (Если вас беспокоит несоответствие кодировки символов, вы можете предпочесть кодировать ä как \ E4 , но это не ограничение CSS как такового.)

Если вы ' Вы спрашиваете, какие браузеры позволят вам избавиться от недопустимого селектора

.1blah/bläh

Тогда, ну, кого это волнует? Просто используйте действующий.

10
ответ дан 2 December 2019 в 22:04
поделиться

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

Если вы посмотрите на грамматику, то поймете, что идентификаторы определяются как

ident       {nmstart}{nmchar}*
nmstart     [a-zA-Z]|{nonascii}|{escape}
nmchar      [a-z0-9-]|{nonascii}|{escape}
nonascii    [^\0-\177]
unicode     \\[0-9a-f]{1,6}[ \n\r\t\f]?

Так что вот вам ответ...

(это для CSS2)

1
ответ дан 2 December 2019 в 22:04
поделиться

/ и другие символы используются как селекторы (особенно в CSS3), поэтому не могут использоваться в именах классов. Поддерживаемые символы - это те, которые вы уже сказали.

-1
ответ дан 2 December 2019 в 22:04
поделиться
1
ответ дан 2 December 2019 в 22:04
поделиться