Si j'ai le div suivant:
<div class="sectionA" id="content">
Lorem Ipsum...
</div>
Existe-t-il un moyen de définir un style qui exprime l’idée "Un div avec id='content'
AND class='myClass'
"?
Ou avez-vous simplement aller dans un sens ou dans l'autre comme dans
<div class="content-sectionA">
Lorem Ipsum...
</div>
Ou
<div id="content-sectionA">
Lorem Ipsum...
</div>
Dans votre feuille de style:
div#content.myClass
Edit: Cela pourrait aussi aider:
div#content.myClass.aSecondClass.aThirdClass /* Won't work in IE6, but valid */
div.firstClass.secondClass /* ditto */
et, selon votre exemple:
div#content.sectionA
Edit, 4 ans plus tard: Puisque c'est très vieux et que les gens continuent à le trouver: ne pas n'utilisez pas les tagNames dans votre sélecteurs. #content.myClass
est plus rapide que div#content.myClass
parce que le tagName ajoute une étape de filtrage dont vous n'avez pas besoin. Utilisez les noms de balises dans les sélecteurs uniquement où vous devez!
Il y a des différences entre #header .callout
et #header.callout
en css.
Voici le "plain anglais" de #header .callout
:
Sélectionnez tous les éléments avec le nom de classe callout
qui sont les descendants de l'élément avec un ID de header
.
Et #header.callout
signifie:
Sélectionnez l’élément dont l’ID est header
et le nom de classe callout
.
Vous pouvez en lire plus ici astuces css
En règle générale, vous ne devriez pas avoir besoin de classer un élément spécifié par id, car id est toujours unique, mais si vous en avez vraiment besoin, les opérations suivantes devraient fonctionner:
div#content.sectionA {
/* ... */
}
Il n'y a rien de mal à combiner un identifiant et une classe sur un élément, mais vous ne devriez pas avoir besoin de l'identifier par les deux pour une seule règle. Si tu le veux vraiment tu peux faire:
#content.sectionA{some rules}
Vous n'avez pas besoin de la div
devant l'ID, comme d'autres l'ont suggéré.
En règle générale, les règles CSS spécifiques à cet élément doivent être définies avec l'ID. Celles-ci auront un poids supérieur à celui de la classe. Les règles spécifiées par la classe seraient des propriétés qui s'appliquent à plusieurs éléments que vous ne souhaitez pas modifier à plusieurs endroits à tout moment et que vous devez ajuster.
Cela se résume à ceci:
.sectionA{some general rules here}
#content{specific rules, and overrides for things in .sectionA}
Avoir un sens?
Vous pouvez combinez ID et Class dans CSS, mais les ID sont censés être uniques. Par conséquent, l'ajout d'une classe à un sélecteur CSS le surqualifierait.
utiliser: tag.id ; tag#class
dans les variables de balise dans votre css.
Je pense que vous avez tous tort. Identité versus classe n'est pas une question de spécificité; ils ont des utilisations logiques complètement différentes.
Les identifiants doivent être utilisés pour identifier des parties spécifiques d'une page: en-tête, barre de navigation, article principal, attribution de l'auteur, pied de page.
Les classes doivent être utilisées pour appliquer des styles à la page. Disons que vous avez un site de magazine général. Chaque page du site comportera les mêmes éléments: en-tête, navigation, article principal, barre latérale, pied de page. Mais votre magazine comporte différentes sections: économie, sport, divertissement. Vous voulez que les trois sections aient une apparence différente - économie conservatrice et carré, sports d'action, divertissement vif et jeune.
Vous utilisez des classes pour cela. Vous ne voulez pas avoir à créer plusieurs identifiants - # economics-article et # sports-article et # entertainment-article. Cela n'a pas de sens. Au lieu de cela, vous définiriez trois classes: .économie, sport et .entertainment, puis définiriez les identifiants #nav, #article et #footer pour chacune.
Les identifiants sont supposés avoir une largeur de document unique, vous ne devriez donc pas avoir à choisir en fonction des deux. Vous pouvez cependant affecter un élément à plusieurs classes avec class="class1 class2"