Coiffeuse avec CSS2 lorsque attr n'est pas réglé
-
20-09-2019 - |
Question
Styling un élément avec un ensemble d'attributs est facile:. E[attr]
Est-il possible de style avec un élément CSS2 basé sur l'absence d'un attribut, quelque chose comme ça E[!attr]
? (Solution JavaScript n'est pas une option).
Par exemple, il existe plusieurs règles de classe suivies par la règle id:
.abc {padding:1em;}
.def {padding:2em;}
#n a {padding:0;}
Le code HTML est:
<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div>
Les classes abc
et def
ont priorité abaisseur contre la domination id-ed afin que les deux a
ont un rembourrage 0. Je ne peux pas modifier l'ordre des règles ci-dessus, mais je peux changer la règle id-ed ajouter mes propres règles. Je veux éviter les règles d'écriture comme #n a.abc
pour chaque classe (il y a beaucoup sommes). Au lieu de cela je besoin de quelque chose comme #n a[!class]
de garder tous a
s classe ed intacte.
La solution
Malheureusement, pas dans CSS2. Le mieux que vous pouvez faire est de cascade vos déclarations:
E {color: red}
E[attr] {color: blue}
Mais même cela ne peut pas vraiment être invoqué, comme IE6 ne respecte pas les sélecteurs d'attribut.
Dans CSS3, cependant, il y a la belle ": non" sélecteur de pseudo ( http://www.w3.org/TR/css3-selectors/#negation ).
EDIT
Merci pour la clarification. Que diriez-vous:
.abc {padding:1em; !important} .def{padding:2em; !important}
#n a{padding: 1em}
Autres conseils
Je ne pense pas que cela puisse se faire dans CSS2. En CSS3, vous devez utiliser les syntaxe "non" :
input:not([type="file"])