CSS-селектор для элемента, имеющего класс .a и класс .b - PullRequest
28 голосов
/ 30 апреля 2009

Мне нужно стилизовать элемент, который имеет класс .a и класс .b. Как мне это сделать?

Порядок появления классов в HTML может отличаться.

<style>
    div.a ? div.b {
        color:#f00;
    }
</style>
<div class="a">text not red</div>
<div class="b">text not red</div>
<div class="a b">red text</div>
<div class="b a">red text</div>

Ответы [ 5 ]

57 голосов
/ 30 апреля 2009

Это вполне возможно. Если вы указываете два класса для элемента (без пробелов), это означает, что он должен иметь оба класса для применения правила.

div.a {
  color: blue;
}
div.b {
  color: green;
}
div.a.b {
  color: red;
}
<div class="a">
  A
</div>
<div class="b">
  B
</div>
<div class="a b">
  AB
</div>
12 голосов
/ 30 апреля 2009

Селекторы классов могут быть объединены:

div.a.b {
  color: red;
}

Цитирование из спецификации :

Чтобы соответствовать подмножеству значений «класса», каждому значению должен предшествовать «.».

Например, следующее правило соответствует любому элементу P, атрибуту «class» которого был присвоен список разделенных пробелами значений, который включает «pastoral» и «marine»:

p.marine.pastoral { color: green }

Это правило соответствует, когда class="pastoral blue aqua marine", но не соответствует class="pastoral blue".

5 голосов
/ 30 апреля 2009
div[class~="a"][class~="b"]{
color:#f00;
}
0 голосов
/ 20 февраля 2015

/ * выберите тег div, имеющий класс a и b вместе * /

 <style>
    div.a.b
    { 
         color:#f00;
    }
    </style>
    <div class="a">text not red</div>
    <div class="b">text not red</div>
    <div class="a b">red text</div>
    <div class="b a">red text</div>
0 голосов
/ 30 апреля 2009

Да, используйте общий класс или, если нет, JavaScript, если содержимое изменяется динамически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...