Ответ 1
Ничего в глобальном смысле. В HTML5 нет ограничений на то, какие символы может содержать атрибут class
(за исключением символа пробела, который используется для разделения нескольких классов).
Например, допустим следующий HTML:
<figure class="foo bar baz %foo *bar _baz 'foo (bar )baz"></figure>
Здесь foo
- один класс, %foo
- второй несвязанный класс, а 'foo
- третий несвязанный класс.
Также справедливо следующее:
<figure class="%*_'()"></figure>
В спецификации HTML5 указано, что атрибут class
должен быть набором токенов, разделенных пробелами. Далее мы определяем их как:
Набор разделенных пространством токенов - это строка, содержащая ноль или несколько слов (называемых токенами), разделенных одним или несколькими символами пробела, где слова состоят из любой строки из одного или нескольких символов, ни один из которых не является символами пробела.
Стоит отметить, что эти символы, возможно, нуждаются в экранировании (путем префикса их символом обратной косой черты (\
)), чтобы быть нацеленным на селектор CSS.
.\%\*\_\'\(\) {
color: red;
}
<figure class="%*_'()">
Hello, world!
</figure>