Какие символы широко поддерживаются в именах классов CSS?
В качестве подробного здесь среди других мест единственными допустимыми символами в имени класса html/css являются az, AZ, 0-9, дефис и подчеркивание, а первый символ должен быть буквой. Но на практике, какие символы фактически поддерживаются большинством браузеров? Более конкретно, мне интересно, какие браузеры правильно понимают косую черту (/) в имени класса и какие браузеры поддерживают имена классов, начинающиеся с числа.
Мне в первую очередь интересно получить ответ для html, а не xhtml, если есть разница.
Спасибо.
Ответы
Ответ 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)
Ответ 3
Unicode работает http://snook.ca/archives/html_and_css/unicode_for_css_class_names
Ответ 4
/и другие символы используются как селекторы (особенно в CSS3), поэтому их нельзя использовать в именах классов. Поддерживаемые символы - это те, которые вы уже сказали.