Атрибут класса HTML с пробелами является допустимым классом W3C?
О атрибуте класса HTML, который присваивает тегу CSS класс (или классы?).
Использование пробелов, например, в
<tag class="a b">....</tag>
действительно?
Этот синтаксис используется некоторыми веб-дизайнерами и происходит в экспортированный HTML-код Adobe InDesign (протестирован с версиями 5 и 6) и другое программное обеспечение для генерации HTML...
Он (class="a b"
) является допустимым синтаксисом W3C? Какие версии CSS и HTML?
(начиная с какой версии вступил в силу?)
EDIT: естественное подзапрос "W3C сказать, как его интерпретировать?" (это "переопределение" или другое поведение визуализации?) был опубликован здесь.
Ответы
Ответ 1
это два разных класса a
и b
, разделенные пробелом. см. w3c DOCS
class= cdata-list [CS]
этот атрибут присваивает имя класса или набор имен классов элемент. Любому числу элементов может быть присвоено одно и то же имя класса или имена. Несколько имен классов должны быть разделены пробелом символы.
Если у вас есть два класса
.a { font-weight: bold; }
.b { font-weight: normal; }
и назначьте в class= "ab" или class= "ba" , затем более поздний класс перезапишет предыдущий класс с тем же свойством, поэтому вес шрифта будет нормальным.
Если вы измените порядок определения CSS,
.b { font-weight: normal; }
.a { font-weight: bold; }
теперь более поздний класс выделен полужирным шрифтом, поэтому "перезаписать предыдущий класс с тем же свойством" результаты font weight bold.
Ответ 2
Это поддерживается в IE 7 и выше, включая все современные браузеры, отличные от IE. Как отмечали другие комментаторы, на самом деле это список классов, а не один класс с пробелами.
Лучший способ понять это - дать вашему примеру еще несколько опций:
<tag class="a b">....</tag>
<tag class="a">....</tag>
<tag class="b">....</tag>
.a.b {}
в вашем css будет нацелен на первый тег.
.a {}
будет нацелен на первый и второй теги.
.b {}
будет нацелен на первый и третий теги.
Вот почему использование нескольких классов в одном элементе может быть очень полезным.
Для вопросов селекторов CSS и псевдоселекторов мне нравится использовать эту (слегка устаревшую) таблицу http://kimblim.dk/css-tests/selectors/
Ответ 3
одно имя класса не может иметь пробелов. элемент может иметь несколько классов, определяемых путем перечисления имен классов, разделенных пробелом
Ответ 4
Это не будет работать в файле CSS или HTML. <div class="a b c"></div>
означает, что элемент div имеет класс a и класс b AND class c.
Между тем, на стороне таблиц стилей .a b c { property: value; }
недействительно, потому что буквально означает "элемент c с предком b с предком, имеющим класс a" (а b и c явно не являются допустимыми элементами HTML), а .a .b .c { property: value; }
будет означать "элемент, имеющий класс c с элементом предка, имеющим класс b с элементом предка, имеющим класс a". Посмотрите правила CSS-специфики, если это не имеет для вас никакого смысла.
Используйте пробелы или символы подчеркивания вместо пробелов.