Подтвердить что ты не робот

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

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

Мне в первую очередь интересно получить ответ для html, а не xhtml, если есть разница.

Спасибо.

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

.1blah/bläh

Тогда, ну, кто действительно заботится? Просто используйте действительный.

Ответ 2

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)

Ответ 4

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