Estoy un poco confundido acerca de CSS y el class
atributo. Siempre pensé que el orden en el que especifico varias clases en el valor del atributo tiene un significado. La última clase podría / debería sobrescribir las definiciones de la anterior, pero esto no parece funcionar. He aquí un ejemplo:
<html>
<head>
<style type="text/css">
.extra {
color: #00529B;
border:1px solid #00529B; /* Blue */
background-color: #BDE5F8;
}
.basic {
border: 1px solid #ABABAB;
}
</style>
</head>
<body>
<input type="text" value="basic" class="basic"/>
<input type="text" value="extra" class="extra"/>
<input type="text" value="basic extra" class="basic extra"/>
<input type="text" value="extra basic" class="extra basic"/>
</body>
</html>
Yo esperaría que el tercer ejemplo con class="basic extra"
debería tener un borde azul, ya que el borde especificado adicional sobrescribiría el borde del básico.
Estoy usando FF 3 en ubuntu 9.04
El orden de las clases en el atributo es irrelevante. Todas las clases del
class
atributo se aplican por igual al elemento.La pregunta es: ¿en qué orden aparecen las reglas de estilo en su archivo .css? En su ejemplo,
.basic
viene después,.extra
por lo que las.basic
reglas tendrán prioridad siempre que sea posible.Si desea proporcionar una tercera posibilidad (por ejemplo, que es
.basic
pero que las.extra
reglas aún deberían aplicarse), necesitará inventar otra clase,.basic-extra
tal vez, que lo proporcione explícitamente.fuente
Esto se puede hacer, pero debe ser un poco creativo con sus selectores. Usando selectores de atributos, puede especificar cosas como "comienza con", "termina con", "contiene", etc. Vea el ejemplo a continuación usando su mismo marcado, pero con selectores de atributos.
fuente