Eu tenho uma tabela simples que é usada para uma caixa de entrada da seguinte maneira:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Como defino a largura para que De e Data sejam 15% da largura da página e o Assunto seja 70%. Também quero que a tabela ocupe toda a largura da página.
html
css
html-table
alamodey
fonte
fonte
width attribute
; está usando aCSS *style* width
, que foi o que substituiu o atributo <col> width. (apesar das várias pessoas up-voto que o comentário !!)span="1"
é supérfluo, pois 1 é o padrão.HTML:
CSS:
A melhor prática é manter seu HTML e CSS separados para menos duplicação de código e para separação de preocupações (HTML para estrutura e semântica e CSS para apresentação).
Observe que, para que isso funcione em versões mais antigas do Internet Explorer, você pode precisar fornecer uma largura específica à sua tabela (por exemplo, 900px). Esse navegador tem alguns problemas ao renderizar um elemento com dimensões percentuais se o seu invólucro não tiver dimensões exatas.
fonte
Use o CSS abaixo; a primeira declaração garantirá que sua tabela adere às larguras fornecidas (você precisará adicionar as classes em seu HTML):
fonte
table{table-layout:fixed};.from,.date{width:15%}
é suficiente. A menos que as classes também sejam usadas em outros elementos, a escritath.from
é redundante e pode ser reduzida para apenas.from
.Maneira alternativa com apenas uma classe, mantendo seus estilos em um arquivo CSS, que até funciona no IE7:
Mais recentemente, você também pode usar o
nth-child()
seletor de CSS3 (IE9 +), onde você colocaria o nr. da respectiva coluna entre parênteses, em vez de juntá-las ao seletor adjacente. Assim, por exemplo:fonte
:nth-child
solução proposta é horrível em termos de desempenho. Não há motivo válido para usá-lo (especialmente com o seletor universal) neste exemplo, onde há apenas três elementos (th
oucol
) para estilizar. Além disso, você só precisa definir a largura comoth
na primeira linha. O.mytable td
primeiro exemplo é redundante.tr
e se pertencem.mytable
. Se você realmente quiser usar "enésimo", então algo como isto provavelmente será muito melhor:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. Também não há necessidade de especificar a largura da terceira coluna neste caso..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Os próprios "enésimos" seletores podem ser muito úteis, mas nesse caso em particular (uma pequena tabela com apenas 3 colunas) não é realmente necessária. Ao usartable-layout: fixed
você mesmo pode fazer exatamente isso:table{table-layout:fixed}th:first-child+th{width:70%}
.Estas são minhas duas sugestões.
Usando classes. Não há necessidade de especificar a largura das outras duas colunas, pois elas serão definidas para 15% cada uma automaticamente pelo navegador.
Sem usar classes. Três métodos diferentes, mas o resultado é idêntico.
a)
b)
c) Este é o meu favorito. O mesmo que b), mas com melhor suporte ao navegador.
fonte
Dependendo das configurações do seu corpo (ou da div que está envolvendo sua mesa), você poderá fazer isso:
Demo
fonte
fonte
Demo
fonte
Tente isso em vez disso.
fonte
Não use o atributo border, use CSS para todas as suas necessidades de estilo.
Mas incorporar CSS dessa maneira é uma prática inadequada - deve-se usar classes CSS e colocar as regras CSS em um arquivo CSS externo.
fonte
Aqui está outra maneira mínima de fazer isso em CSS que funciona mesmo em navegadores mais antigos que não suportam
:nth-child
e seletores similares: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
fonte
Adicione colgroup após a tag da tabela. Defina a largura e o número da coluna aqui. e adicione a tag tbody. Coloque seu tr dentro de tbody.
fonte
fonte