Selecionar elemento com base em várias classes


360

Eu tenho uma regra de estilo que quero aplicar a uma marca quando ela possui duas classes. Existe alguma maneira de fazer isso sem JavaScript? Em outras palavras:

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

Quero aplicar minha regra de estilo única , se o litem tanto .lefte .ui-class-selectoraulas aplicada.


Respostas:


595

Você quer dizer duas classes? "Encadeie" os seletores (sem espaços entre eles):

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

Isso seleciona todos os elementos class1que também possuem class2.

No seu caso:

li.left.ui-class-selector {

}

Documentação oficial: seletores de classe CSS2 .


Como akamike aponta um problema com esse método no Internet Explorer 6, você pode ler o seguinte: Usar classes duplas no CSS do IE6?


6
Observe que o IE6 não gosta disso, pois não lê a cadeia de classes. Ele analisará apenas a última classe da cadeia.
akamike 31/03

16
não é :) Todos os principais sites caíram, estão caindo ou planejam cair no futuro próximo para suporte ao IE6 .. Faça o mesmo!
Thomas Bonini

@ Andreas Bonini: Sim, eu sei. Para ser sincero, já não me importo com o IE6 há muito tempo. (Eu apaguei o meu comentário anterior porque eu encontrei a outra pergunta que lida com este problema.)
Felix Kling

Sim, você não pode usá-los no IE6, apenas use rotas mais longas para estilizar seus elementos. Por exemplo, estilizando cada classe separadamente e usando a especificidade CSS apropriada para substituir da melhor maneira possível.
akamike

2
Lembro-me com carinho de dançar no túmulo do IE6. Eu nem tive que apoiar o IE10 este ano, e abandonar o IE por completo está no horizonte. Eu amo o futuro. Sche
Michael Scheper

22

Os seletores de cadeia não se limitam apenas às classes, você pode fazer isso para classes e IDs.

Aulas

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

Classe e ID

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

Eu fiz

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

Todos os bons navegadores atuais suportam isso, exceto o IE 6, que seleciona com base no último seletor da lista. Portanto, ".classA.classB" será selecionado com base apenas em ".classB".

Para o seu caso

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

ou

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

9
Id & Id é um seletor conceitualmente estranho.
Félix Gagnon-Grenier

0

Você pode usar estas soluções:

As regras CSS se aplicam a todas as tags que possuem as seguintes duas classes:

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

As regras CSS se aplicam a todas as tags que possuem as <li>seguintes duas classes:

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

solução jQuery:

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

Solução Javascript:

document.querySelector("li.left.ui-class-selector").style.color = "red";
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.