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 losth
elementos contenidos en undiv
elemento con una clase denominadatest
, además de todos lostd
elementos y todos loscaption
elementos.No es lo mismo que "todos
td
,th
ycaption
elementos que están contenidos por undiv
elemento 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 > th
diceany <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.parent
etiqueta 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
yourclass
que podrían no serdiv
s) 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