Pregunta

Styling un elemento con un conjunto de atributos es fácil:. E[attr]

¿Hay alguna manera con el estilo de un elemento con CSS2 basada en la ausencia de un atributo, algo como esto E[!attr]? (Solución de JavaScript no es una opción).

Por ejemplo, hay varias reglas de la clase seguido por regla id:

.abc {padding:1em;}
.def {padding:2em;}
#n a {padding:0;}

El código HTML es:

<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div>

Las clases abc y def prioridad lowerer contra el dominio id-ed por lo tanto a tienen acolchado 0. No puedo cambiar la secuencia de las reglas anteriores, pero puedo cambiar la regla id-ed añadir mis propias reglas. Quiero evitar reglas de escritura como #n a.abc para cada clase (hay muchos). En vez necesito algo así como #n a[!class] de mantener todos los as clase de opinión intacta.

¿Fue útil?

Solución

Lamentablemente, no en CSS2. Lo mejor que puede hacer es poner en cascada sus declaraciones:

E {color: red}
E[attr] {color: blue}

Pero incluso esto no se puede confiar realmente en, como IE6 no respeta selectores de atributos.

En CSS3, sin embargo, no es la preciosa ": no" selector de seudo ( http://www.w3.org/TR/css3-selectors/#negation ).

editar

Gracias por la aclaración. ¿Qué hay de:

.abc {padding:1em; !important} .def{padding:2em; !important}

#n a{padding: 1em}

Otros consejos

No creo que esto se puede hacer en CSS2. En CSS 3, tendrá que utilizar la "no" sintaxis :

input:not([type="file"])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top