Quiero aplicar estilos solo a la tabla dentro del DIV con una clase particular:
Nota: Prefiero usar un selector css para elementos secundarios.
¿Por qué funciona el # 1 y el # 2 no?
1:
div.test th, div.test td, div.test caption {padding:40px 100px 40px 50px;}
2:
div.test th, td, caption {padding:40px 100px 40px 50px;}
HTML:
<html>
<head>
<style>
div.test > th, td, caption {padding:40px 100px 40px 50px;}
</style>
</head>
<body>
<div>
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
<div class="test">
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
</body>
</html>
¿Qué estoy haciendo mal?
css
css-selectors
romano m
fuente
fuente

Respuestas:
Este código "
div.test th, td, caption {padding:40px 100px 40px 50px;}" aplica una regla a todos losthelementos contenidos en undivelemento con una clase denominadatest, además de todos lostdelementos y todos loscaptionelementos.No es lo mismo que "todos
td,thycaptionelementos que están contenidos por undivelemento con una clase detest". Para lograrlo, debe cambiar sus selectores:'
>' no es totalmente compatible con algunos navegadores antiguos (te estoy mirando, Internet Explorer).fuente
fuente
.test *sería la regla más específica para cada elemento secundario. En otras palabras, tenga en cuenta que cualquier cosa que ponga dentro.test *no puede ser anulada por ninguna regla css más específica porquetest *es la regla más específica.El
>selector solo coincide con hijos directos, no descendientes.Usted quiere
o más probable
Editar:
El primero dice
Mientras que el segundo dice
En su original ,
div.test > thdiceany <th> which is a **direct** child of <div class="test">, lo que significa que coincidirá<div class="test"><th>this</th></div>pero no coincidirá<div class="test"><table><th>this</th></table></div>fuente
Si desea agregar estilo en todos los elementos secundarios y no hay especificación para la etiqueta html, úsela.
Etiqueta principal
div.parentetiqueta secundaria dentro de la div.parent como
<a>,<input>,<label>etc.codigo:
div.parent * {color: #045123!important;}También puede eliminar importante, no es obligatorio
fuente
Aquí hay un código que escribí recientemente. Creo que proporciona una explicación básica de combinar nombres de clase / ID con pseudoclases.
fuente
//. Ver stackoverflow.com/questions/4656546/…funciona para mi.
El selector secundario> no funciona en IE6.
fuente
Hasta donde yo sé esto:
o en tu caso incluso esto:
(pero esto funcionará para los elementos
yourclassque podrían no serdivs) afectará solo las tablas dentroyourclass. Y, como dice Ken, el> no es compatible en todas partes (ydiv[class=yourclass]también, así que use la notación de puntos para las clases).fuente
Este código también puede hacer el truco, usando la sintaxis SCSS
fuente