¿Es posible, además de lo que estoy haciendo porque no parece funcionar, hacer esto? Quiero poder tener subclases que estén debajo de una clase para usar el CSS específicamente para esa clase.
CSS
.area1
{
border:1px solid black;
}
.area1.item
{
color:red;
}
.area2
{
border:1px solid blue;
}
.area2.item
{
color:blue;
}
HTML
<div class="area1">
<table>
<tr>
<td class="item">Text Text Text</td>
<td class="item">Text Text Text</td>
</tr>
</table>
</div>
<div class="area2">
<table>
<tr>
<td class="item">Text Text Text</td>
<td class="item">Text Text Text</td>
</tr>
</table>
</div>
De modo que puedo usar class = "item" para los elementos de la clase css principal "area1", "area2". Sé que puedo usar class = "area1 item" para que esto funcione, pero no entiendo por qué tiene que ser tan detallado. ¿No debería la subclase css mirar en qué clase principal se encuentra para definirla?
Nota: esto funciona en IE (usando 7 en este momento), pero en FF no, así que supongo que esta no es una forma estándar de CSS de hacer algo.
Para su información, cuando define una regla como lo hizo anteriormente, con dos selectores encadenados:
Significa:
Como:
Lamentablemente, no funciona en IE6, pero eso es lo que significa.
fuente
Su problema parece ser un espacio faltante entre sus dos clases en el CSS:
Debiera ser
fuente
¿Quiere forzar la selección de hijos únicos? http://css.maxdesign.com.au/selectutorial/selectors_child.htm
fuente
Simplemente ponga un espacio entre .area1 y .item, por ejemplo:
este estilo se aplica a elementos con elemento de clase dentro de un elemento con área de clase1.
fuente
Solo deja un espacio entre tus clases
Aquí hay una muy buena referencia para los selectores de CSS .
fuente
Continuando con la respuesta de kR105 anterior:
Mi problema fue similar al del OP (Póster original), solo ocurrió fuera de una tabla, por lo que las subclases no se llamaron desde dentro del alcance de la clase principal (la tabla), sino fuera de ella, por lo que tuve que AGREGAR selectores , como se menciona en kR105.
Aquí estaba el problema: tenía dos cuadros (divs), cada uno con el mismo radio de borde (HTML5), relleno y margen, pero necesitaba hacerlos de diferentes colores. En lugar de repetir esos 3 parámetros para cada clase de color, quería que una "superclase" contenga border-radius / padding / margin, luego solo "subclases" individuales para expresar sus diferencias (comillas dobles alrededor de cada una, ya que en realidad no son subclases - ver mi publicación posterior). Así es como funcionó:
HTML:
CSS:
Espero que alguien lo encuentre útil.
fuente
Esa es la columna vertebral de CSS, la "cascada" en las hojas de estilo en cascada.
Si escribe sus reglas CSS en una sola línea, será más fácil ver la estructura:
El uso de múltiples clases también es un buen uso intermedio / avanzado de CSS, desafortunadamente hay un error de IE6 bien conocido que limita este uso al escribir código de navegador cruzado:
IE6 IGNORA el primer selector en una regla de varias clases, por lo que IE6 realmente aplica la regla .area1.larger como
Lo que significa que afectará a TODOS los elementos más grandes.
Es un error muy desagradable y desafortunado (uno de muchos) en IE6 que te obliga a casi nunca usar esa función de CSS si quieres un archivo CSS limpio entre navegadores.
La solución entonces es usar prefijos de nombre de clase CSS para evitar colisiones con nombres de clase genéricos:
También puede usar solo una clase, pero de esa manera puede mantener el CSS en la lógica que pretendía, sabiendo que .area1Larger solo afecta a .area1, etc.
fuente
La clase que aplica en el div se puede utilizar como punto de referencia para diseñar elementos con ese div, por ejemplo.
Para ser súper semántico, debes mover la clase a la mesa.
fuente
también puedes tener dos clases dentro de un elemento como este
<div class = "item1 item2 item3"></div>
cada elemento de la clase es su propia clase
fuente
kR105 escribió:
el borde y el texto del cuadro serían azules, ya que el estilo de .box2 asigna estos valores.
También en mi publicación anterior debería haber enfatizado que agregar selectores como lo hice no es lo mismo que crear una subclase dentro de una clase (la primera solución en este hilo), aunque el efecto es similar.
fuente