Виберіть елемент на основі декількох класів


360

У мене є правило стилю, яке я хочу застосувати до тегу, коли він має два класи. Чи можливо це зробити без JavaScript? Іншими словами:

<li class='left ui-class-selector'>

Я хочу застосувати моє правило стилю лише у тому випадку, якщо застосовані liобидва .leftта .ui-class-selectorкласи.


Відповіді:


595

Ви маєте на увазі два класи? "Ланцюг" селекторів (між ними немає пробілів):

.class1.class2 {
    /* style here */
}

Це вибирає всі елементи, class1які також є class2.

У вашому випадку:

li.left.ui-class-selector {

}

Офіційна документація: селектори CSS2 .


Оскільки akamike вказує на проблему з цим методом в Internet Explorer 6, ви можете прочитати це: Використовуйте подвійні класи в CSS IE6?


6
Зверніть увагу, що IE6 не подобається цим, оскільки він не читає ланцюжок класів. Він буде дивитись лише на останній клас у ланцюжку.
акаміке

16
це не :) Усі основні веб-сайти випали, випадають або планують в найближчому майбутньому припинити підтримку IE6 .. Зробіть те ж саме!
Томас Боніні

@Andreas Bonini: Так, я знаю. Якщо чесно, я вже давно не хвилююся IE6. (Я видалив попередній коментар, оскільки знайшов інше питання, що стосується цієї проблеми.)
Фелікс Клінг

Так, ви взагалі не можете їх використовувати в IE6, лише використовуйте довші маршрути для стилізації елементів. Наприклад, стилізація кожного класу окремо та використання відповідної специфіки CSS для того, щоб переоцінити якнайкраще.
akamike

2
Я приємно пам'ятаю танці на могилі IE6. Цього року мені навіть не доводилося підтримувати IE10, а скидання IE взагалі на горизонті. Я люблю майбутнє. ☺
Майкл Шепер

22

Вибір ланцюгів не обмежується лише класами, ви можете робити це як для класів, так і для ідентифікаторів.

Заняття

.classA.classB {
/*style here*/
}

Клас та ідентифікатор

.classA#idB {
/*style here*/
}

Я зробив

#idA#idB {
/*style here*/
}

Усі хороші поточні браузери підтримують це, крім IE 6, він вибирається на основі останнього селектора у списку. Отже ".classA.classB" буде обраний на основі просто ".classB".

Для вашого випадку

li.left.ui-class-selector {
/*style here*/
}

або

.left.ui-class-selector {
/*style here*/
}

9
Id & Id - концептуально дивний вибір.
Фелікс Ганьон-Греньє

0

Ви можете використовувати ці рішення:

Правила CSS застосовуються до всіх тегів, які мають два класи:

.left.ui-class-selector {
    /*style here*/
}

Правила CSS застосовуються до всіх тегів, які мають <li>наступні два класи:

li.left.ui-class-selector {
   /*style here*/
}

jQuery рішення:

$("li.left.ui-class-selector").css("color", "red");

Рішення Javascript:

document.querySelector("li.left.ui-class-selector").style.color = "red";
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.