Styling con CSS2 quando attr non è impostato
-
20-09-2019 - |
Domanda
Styling un elemento con un attributo set è semplice:. E[attr]
C'è un modo per lo stile un elemento con CSS2 basata sull'assenza di un attributo, qualcosa di simile E[!attr]
? (Soluzione JavaScript non è un'opzione).
Per esempio, ci sono diverse regole di classe seguita da regola ID:
.abc {padding:1em;}
.def {padding:2em;}
#n a {padding:0;}
Il codice HTML è:
<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div>
Le classi abc
e def
avere la priorità lowerer contro il dominio id-ed in modo che entrambi hanno a
imbottitura 0. Non posso cambiare la sequenza di regole di cui sopra, ma posso cambiare regola id-ed aggiungere le mie regole. Voglio evitare regole di scrittura come #n a.abc
per ogni classe (ci sei molti). Invece ho bisogno di qualcosa come #n a[!class]
per mantenere intatte tutte le a
s classe-ed.
Soluzione
Purtroppo, non in CSS2. Il meglio che puoi fare è quello di collegare in cascata sue dichiarazioni:
E {color: red}
E[attr] {color: blue}
Ma anche questo non può davvero essere invocata, come IE6 non onora i selettori di attributo.
In CSS3, però, c'è la bella ": non" selettore di pseudo ( http://www.w3.org/TR/css3-selectors/#negation ).
Modifica
Grazie per il chiarimento. Che ne dite di:
.abc {padding:1em; !important} .def{padding:2em; !important}
#n a{padding: 1em}
Altri suggerimenti
Non credo che questo può essere fatto nei CSS2. In CSS3, utilizza il "non" la sintassi :
input:not([type="file"])