Как детализировано здесь среди других мест, единственные допустимые символы в имени класса html/css являются a-z, A-Z, 0-9, дефисом и подчеркиванием, и первый символ должен быть буквой. Но на практике, какие символы на самом деле поддерживаются большинством браузеров? Строго говоря, интересно, какие браузеры правильно понимает наклонную черту (/) в имени класса, и какие браузеры поддерживают имена классов, запускающиеся с числа.
Я, прежде всего, интересуюсь получением ответа для HTML, а не xhtml, в случае, если существует различие.
Спасибо.
Обратите внимание, что имена классов определяются HTML, а не CSS. HTML4 говорит , что атрибут class
является cdata-list
, который представляет собой токены, разделенные пробелами. Таким образом, один токен имени класса может содержать любой символ, кроме символов пробела.
Интересно, какие браузеры правильно понимают косую черту (/) в имени класса и какие браузеры поддерживают имена классов, начинающиеся с числа.
Чтобы ссылаться на такие имена в селекторе классов CSS, вам нужно использовать escape-последовательность. Например: [
<div class="1blah/bläh">
] соответствует:
.\31 blah\2F bläh { ... }
Это поддерживается всеми текущими браузерами .Он не поддерживался IE5, но, к счастью, это больше не проблема. (Если вас беспокоит несоответствие кодировки символов, вы можете предпочесть кодировать ä
как \ E4
, но это не ограничение CSS как такового.)
Если вы ' Вы спрашиваете, какие браузеры позволят вам избавиться от недопустимого селектора
.1blah/bläh
Тогда, ну, кого это волнует? Просто используйте действующий.
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)
/ и другие символы используются как селекторы (особенно в CSS3), поэтому не могут использоваться в именах классов. Поддерживаемые символы - это те, которые вы уже сказали.
Unicode работает http://snook.ca/archives/html_and_css/unicode_for_css_class_names