Есть ли способ обхода CSS классов с именами, которые начинаются с действительных чисел?
Относится ли это к тому, что классы CSS с именами, начинающимися с цифр, не работают?
например, я обнаружил, что класс с фоном вроде:
.000000-8 {background:url(../../images/common/000000-0.8.png);}
.8FFFFFF {background:url(../../images/common/FFFFFF-0.8.png);}
не работает в большинстве браузеров, которые у меня есть, и CSS-грамматика показывает, что, но мой вопрос заключается в обходном пути, чтобы сделать классы CSS с именами, которые начинаются с действительных чисел?.
Ответы
Ответ 1
Нет классов CSS. Вопрос логически разделяется на два вопроса: можете ли вы запустить имя класса с цифрой в HTML и (если ответ "да", как есть), если это так, как вы используете соответствующий селектор классов в CSS?
Различные спецификации HTML налагают различные ограничения на имена классов, но в практике браузера и в соответствии с HTML5 ограничений нет, за исключением того, что имя класса не может содержать пробельные символы. Итак, class=000000-8
.
По правилам синтаксиса CSS, идентификатор CSS не может иметь неэкранированную цифру. Поэтому селектор типа .000000-8
недействителен. Но цифру можно избежать, правила экранирования CSS: селектор
.\30 00000-8
или, что эквивалентно,
.\00003000000-8
действителен и соответствует элементу с class=000000-8
.
Излишне говорить, что имена классов, начинающиеся с цифры, лучше избегать, но если вам нужно работать с ними (например, потому что некоторые документы HTML имеют их, и вы не можете изменить разметку), это так.
Ответ 2
Да, он задокументирован в спецификации CSS:
В CSS идентификаторы (включая имена элементов, классы и идентификаторы в селекторы) могут содержать только символы [a-zA-Z0-9]
и ISO 10646 символы U+00A0
и выше, плюс дефис (-
) и символ подчеркивания (_
); они не могут начинаться с цифры, двух дефисов или дефисов цифрой. Идентификаторы также могут содержать экранированные символы и любые ISO 10646 в виде числового кода (см. Следующий пункт). Например, идентификатор "B&W?
" может быть записан как "B\&W\?
" или "B\26 W\3F
".
Ответ 3
Вы можете прочитать все о точных данных о том, что является допустимым (или недействительным) при назначении имен в CSS3 (не знаю, почему все ссылаются на документы CSS2?):
http://www.w3.org/TR/css3-selectors/#w3cselgrammar