J'ai du HTML qui aurait des éléments avec plusieurs classes, et je dois les attribuer dans une règle, de sorte que les mêmes classes puissent être différentes dans différents conteneurs. Dites que j'ai ceci dans mon CSS:
.border-blue {
border: 1px solid blue;
}
.background {
background: url(bg.gif);
}
Ensuite, j'ai ceci dans mon HTML:
<div class='border-blue background'>Lorum Crap No-one Cares About Ipsum</div>
Puis-je les cibler dans une seule règle? Comme ça, par exemple, qui je sais ne fonctionne pas:
.border-blue, .background {
border: 1px solid blue;
background: url(bg.gif);
}
.border-blue .background { ... }
enfant? J'ai essayé et cela ne fonctionne pasJuste au cas où quelqu'un trébucherait sur cela comme je l'ai fait et ne s'en rend pas compte, les deux variantes ci-dessus sont pour des cas d'utilisation différents.
Le suivant:
est pour lorsque vous souhaitez ajouter des styles à des éléments qui ont la classe de bordure bleue ou d'arrière-plan, par exemple:
recevraient tous une bordure bleue et un fond blanc qui leur seraient appliqués.
Cependant, la réponse acceptée est différente.
Cela applique les styles aux éléments qui ont les deux classes, donc dans cet exemple, seuls les
<div>
avec les deux classes devraient obtenir les styles appliqués (dans les navigateurs qui interprètent correctement le CSS):Donc, en gros, pensez-y comme ceci, la séparation par virgule s'applique aux éléments avec une classe OU une autre classe et la séparation par points s'applique aux éléments avec une classe ET une autre classe .
la source
.blue-border.background
think of it as AND and OR
: Très bon conseil. Je pourrais ajouter que cela.x .y
peut être considéré commey && ancestors.has(x)