2010-03-31 2 views
273

У меня есть правило стиля, которое я хочу применить к тегу, когда он имеет два стиля. Есть ли способ выполнить это без JavaScript? Другими словами:Выбрать элемент на основе нескольких классов

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

Я хочу, чтобы применить свои правила стиля только если li имеет как .left и .ui-class-selector классы применяются.

ответ

471

Вы имеете в виду два класса? «Сеть» не селекторы (без пробелов между ними):

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

Это выбирает все элементы с class1, которые также имеют class2.

В вашем случае:

li.left.ui-class-selector { 

} 

Официальная документация: CSS2 class selectors.


Как akamike баллов из-за проблем с этим методом в Internet Explorer 6 вы можете прочитать: Use double classes in IE6 CSS?

+6

Пожалуйста, обратите внимание, что IE6 не нравится это, поскольку это не читает цепочку классов. Он будет смотреть только на последний класс в цепочке. – akamike

+10

это не так :) Все крупные веб-сайты упали, упали или планируют отказаться в ближайшем будущем поддерживать IE6 .. Сделайте то же самое! –

+0

@ Андреас Бонини: Да, я знаю. Честно говоря, я уже давно не забочусь о IE6. (Я удалил свой предыдущий комментарий, потому что нашел другой вопрос, который касается этой проблемы.) –

18

цепи селекторы не ограничиваются только к классам, вы можете сделать это для обоих классов и идентификаторы.

Классы

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

Класс & Id

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

Id & Id

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

Все хорошие текущие браузеры поддерживают это, кроме IE 6, он выбирает на основе последнего селектора в списке. Таким образом, «.classA.classB» будет выбирать на основе только «.classB».

В вашем случае

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

или

.left.ui-class-selector { 
/*style here*/ 
} 
Смежные вопросы