Estoy un poco confundido acerca de CSS y el classatributo. 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
classatributo se aplican por igual al elemento.La pregunta es: ¿en qué orden aparecen las reglas de estilo en su archivo .css? En su ejemplo,
.basicviene después,.extrapor lo que las.basicreglas tendrán prioridad siempre que sea posible.Si desea proporcionar una tercera posibilidad (por ejemplo, que es
.basicpero que las.extrareglas aún deberían aplicarse), necesitará inventar otra clase,.basic-extratal 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