Селектор CSS "(A или B) и C"?
Это должно быть просто, но у меня возникли проблемы с поиском терминов для него.
Допустим, у меня есть это:
<div class="a c">Foo</div>
<div class="b c">Bar</div>
в CSS, как я могу создать селектор, который соответствует тому, что соответствует "(.или .Б) и .с"?
Я знаю, что я мог бы сделать это:
.a.c,.b.c {
/* CSS stuff */
}
но, предполагая, что мне придется делать такую логику много, с различными логическими комбинациями, есть ли лучший синтаксис?
4 ответов:
есть ли лучший синтаксис?
нет. CSS'
orоператор (,) не разрешает группировку. Это, по сути, логический оператор с наименьшим приоритетом в селекторах, поэтому вы должны использовать.a.c,.b.c.
пока нет, но есть экспериментальные
:matches()селектор, который делает именно это::matches(.a .b) .c { /*stuff goes here */ }вы можете найти дополнительную информацию о нем здесь и здесь. В настоящее время большинство браузеров поддерживают его начальную версию
:any(), который работает так же, но будет заменен на:matches(). Мы просто должны подождать немного больше, прежде чем использовать это везде (я уверен, что будет).
если у вас есть это:
<div class="a x">Foo</div> <div class="b x">Bar</div> <div class="c x">Baz</div>и вы только хотите, чтобы выбрать элементы, которые имеют
.xи (.aили.b), вы могли бы написать:.x:not(.c) { ... }но это удобно только тогда, когда у вас есть три "подкласса", и вы хотите выбрать два из них.
выбор только одного подкласса (например
.a):.a.xвыбор двух подклассов (например
.aи.b):.x:not(.c)выбрать все три подкласса:
.x
нет. Стандартный CSS не предоставляет то, что вы ищете.
однако, вы можете посмотреть в меньше и Сасс.
Это два проекта, которые направлены на расширение синтаксиса CSS по умолчанию путем введения дополнительных функций, включая переменные, вложенные правила и другие усовершенствования.
Они позволяют вам писать гораздо более структурированный код CSS, и любой из них почти наверняка решит ваше конкретное использование случай.
конечно, ни один из браузеров не поддерживает их расширенный синтаксис (тем более, что каждый из двух проектов имеет различный синтаксис и функции), но то, что они делают, это предоставить "компилятор", который преобразует ваш код LESS или SASS в стандартный CSS, который затем можно развернуть на вашем сайте.
Comments