Usando CSS, como alterar apenas a 2ª coluna de uma tabela


125

Usando apenas css, como posso substituir o css apenas da 2ª coluna de uma tabela.

Eu posso acessar todas as colunas usando:

.countTable table table td

Não consigo acessar o html nesta página para modificá-lo, pois não é o meu site.

Obrigado.

css 

Respostas:


238

Você pode usar a :nth-childpseudo classe como esta:

.countTable table table td:nth-child(2)

Observe, porém, que isso não funcionará em navegadores mais antigos (ou IE); você precisará dar uma classe às células ou usar javascript nesse caso.


Isso fornecerá apenas a segunda célula em cada tabela, não a segunda célula em cada linha. Você precisa de .countTable table tr trd: nth-child (2)
Deeksy

3
@ Deeksy - Isso não é preciso, não importa qual é o seletor. nth-childé aplicado depois de encontrar o elemento e é nthcomparado a qualquer pai que ele tenha, independentemente de estar no seletor ou não. Você pode ver isso funcionando aqui: jsfiddle.net/JQQPz
Nick Craver

que tal mudar apenas o css de um elemento dentro de td: nth-child (2). Como a tag <a>. será td a: enésimo filho (2) {}?
Ivo San

1
@ ivory-santos basta adicionar o ano final, por exemplo, td:nth-child(2) apara estilizar os links abaixo desse elemento.
Nick Craver

Por que você tem tabela duas vezes (diferente das outras respostas abaixo)?
UlFie

26

Tente o seguinte:

.countTable table tr td:first-child + td

Você também pode reiterar para estilizar as outras colunas:

.countTable table tr td:first-child + td + td {...} /* third column */
.countTable table tr td:first-child + td + td + td {...} /* fourth column */
.countTable table tr td:first-child + td + td + td +td {...} /* fifth column */

1
Optei por isso em uma situação em que os proprietários do site que mantinham o código não eram desenvolvedores e isso lhes deu a capacidade de alterar o alinhamento de colunas em suas tabelas de dados de uma maneira muito direta que, embora um pouco detalhada, com comentários como você aqui facilitou o conhecimento de qual bloco seletor era para qual coluna da esquerda. Novamente, não da maneira mais elegante e eficiente, mas funcionou!
Eric Bishard

18

Para alterar apenas a segunda coluna de uma tabela, use o seguinte:

Caso Geral:

table td + td{  /* this will go to the 2nd column of a table directly */

background:red

}

Seu caso:

.countTable table table td + td{ 

background: red

}

Nota: isso funciona para todos os navegadores (modernos e antigos), por isso adicionei minha resposta a uma pergunta antiga


Qual seria o ajuste para selecionar apenas a primeira coluna? Usar a tabela td {...} seleciona todas as células em outras colunas também.
J4v1

1
@ mesa j4v1 td {background: red;} // primeira coluna terá tabela vermelho fundo td + td {background: blue;} // resto terá azul
Abzoozy

-2

Você pode designar uma classe para cada célula na segunda coluna.

<table>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
</table>

Eu não posso usar isso. Como eu disse, essa não é minha página e, portanto, não posso alterar o html.

2
@ Duniyadnd essa não é uma boa abordagem, em comparação com a maneira existente de usar seletores.
PM

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.