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 as classe-ed.

È stato utile?

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"])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top