Quero aplicar estilos apenas à tabela dentro do DIV com uma classe específica:
Nota: Prefiro usar um seletor de css para elementos filhos.
Por que o nº 1 funciona e o nº 2 não?
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>
O que estou fazendo de errado?
css
css-selectors
m romano
fonte
fonte
Respostas:
Este código "
div.test th, td, caption {padding:40px 100px 40px 50px;}
" aplica uma regra a todos osth
elementos que estão contidos por umdiv
elemento com uma classe nomeadatest
, além de todos ostd
elementos e todos oscaption
elementos.Não é o mesmo que "todos
td
,th
ecaption
elementos que estão contidos por umdiv
elemento com uma classe detest
". Para fazer isso, você precisa alterar seus seletores:'
>
' não é totalmente suportado por alguns navegadores mais antigos (estou olhando para você, Internet Explorer).fonte
fonte
.test *
seria a regra mais específica para cada elemento filho. Em outras palavras, lembre-se de que o que você colocar dentro.test *
não pode ser substituído por nenhuma regra css mais específica, porquetest *
é a regra mais específica.O
>
seletor corresponde apenas a filhos diretos, não a descendentes.Você quer
ou mais provável
Editar:
O primeiro diz
Considerando que o segundo diz
No seu original ,
div.test > th
dizany <th> which is a **direct** child of <div class="test">
: o que significa que ele corresponderá,<div class="test"><th>this</th></div>
mas não corresponderá<div class="test"><table><th>this</th></table></div>
fonte
Se você deseja adicionar estilo a todas as crianças e nenhuma especificação para a tag html, use-a.
Etiqueta principal
div.parent
tag criança dentro do div.parent como
<a>
,<input>
,<label>
etc.código:
div.parent * {color: #045123!important;}
Você também pode remover importantes, não é necessário
fonte
Aqui está um código que eu escrevi recentemente. Eu acho que ele fornece uma explicação básica da combinação de nomes de classe / ID com pseudoclasses.
fonte
//
. Veja stackoverflow.com/questions/4656546/…funciona para mim.
O seletor filho> não funciona no IE6.
fonte
Tanto quanto eu sei disso:
ou no seu caso, mesmo isso:
(mas isso funcionará para elementos
yourclass
que podem não serdiv
s) afetará apenas as tabelas internasyourclass
. E, como Ken diz, o> não é suportado em todos os lugares (ediv[class=yourclass]
também, portanto, use a notação de ponto para classes).fonte
Esse código também pode funcionar, usando a sintaxe SCSS
fonte