Как выбрать элемент, содержащий только класс "foobar", не выбирать, содержит ли он какие-либо другие классы?

Я хочу только выделить элемент, если он имеет один класс, а этот класс - foobar.

<style>
.foobar {
    /* only apply to an element if the element has a class and the only class is 'foobar'. */
    background: black;
    color: white;
}
</style>

<div class="foobar">i should be selected</div>

<div class="foobar ipsum">i should not be selected</div>

Я знаю, что я мог бы выбрать его с добавлением стиля для .foobar.ipsum {сделать что-то} и .foobar {something else}, но у меня нет контроля над дополнительными классами. В основном, когда элемент имеет только класс foobar, я знаю его как элемент и откуда-то из другого. Это то, что происходит, когда миры библиотеки CSS сталкиваются. Я знаю, что здесь есть более глубокие проблемы, но сейчас это меня бросает.

Ответы

Ответ 1

Самый простой способ с чистым CSS - использовать селектор атрибутов:

[class="foobar"] {
    /* only apply to an element if the element has a class and the only class is 'foobar'. */
    background: black;
    color: white;
}

У вас может не быть контроля над другими элементами, но если у вас есть контроль над вашим, и вы можете изменить его атрибут class, mayabelle делает хороший момент присваивая вашему элементу свой собственный специальный класс и вместо этого выбрав этот класс. Таким образом, вы явно указываете, какой элемент принадлежит вам, а не исходя из предположения, что отсутствие дополнительных классов означает его ваш.

Ответ 3

Если это "ваш элемент", вы можете применить к нему дополнительный класс? Затем вы можете выбрать, используя это:

<style>
.foobar.yourClass {
    /* your css */
}
</style>

<div class="foobar yourClass">i should be selected</div>
<div class="foobar ipsum">i should not be selected</div>