CSS селектор для элементов с двумя классами
Как выбрать элемент с помощью CSS на основе наличия у него двух специфических классов? У меня есть три div-а:
<div class="foo">Hello Foo</div>
<div class="foo bar">Hello World</div>
<div class="bar">Hello Bar</div>
Какой CSS нужно написать, чтобы выбрать ТОЛЬКО второй элемент в списке, основываясь на том, что он одновременно принадлежит классам foo И bar?
2 ответ(ов)
Вы можете связать селекторы классов (без пробела между ними) следующим образом:
.foo.bar {
/* Стили для элементов с классами foo И bar */
}
Однако, если вам нужно работать со старыми браузерами, такими как Internet Explorer 6, имейте в виду, что этот браузер неправильно обрабатывает цепочечные селекторы классов: он будет читать только последний селектор класса (в данном случае .bar
), игнорируя остальные.
Чтобы продемонстрировать, как другие браузеры и IE6 интерпретируют это, рассмотрим следующий фрагмент:
* {
color: black;
}
.foo.bar {
color: red;
}
<div class="foo">1. Hello Foo</div>
<div class="foo bar">2. Hello World</div>
<div class="bar">3. Hello Bar</div>
Страница будет выглядеть следующим образом:
В поддерживаемых браузерах:
- Не выбран - этот элемент имеет только класс
foo
. - Выбран - этот элемент имеет оба класса
foo
иbar
. - Не выбран - этот элемент имеет только класс
bar
.
- Не выбран - этот элемент имеет только класс
В Internet Explorer 6:
- Не выбран - этот элемент не имеет класса
bar
. - Выбран - этот элемент имеет класс
bar
, независимо от других классов. - Выбран - этот элемент также имеет класс
bar
.
- Не выбран - этот элемент не имеет класса
Это можно сделать двумя способами в SCSS.
Вариант 1
.foo.bar {
// Стили для класса "foo bar"
}
Вариант 2
.foo {
&.bar {
// Стили для класса "foo bar"
}
}
Существует ли селектор родителя в CSS?
Какие символы допустимы в именах классов/селекторах CSS?
Что означает селектор CSS "~" (тильда/кручёная)?
CSS-селектор для первого элемента с классом
Использование подстановочного знака * в CSS для классов