Modelar con el CSS2 cuando attr no se establece
-
20-09-2019 - |
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 a
s clase de opinión intacta.
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"])