Por favor, veja este JSFIDDLE
td.rhead { width: 300px; }
Por que a largura do CSS não funciona?
<table>
<thead>
<tr>
<td class="rhead">need 300px</td>
<td colspan="7">Week #0</td>
<td colspan="7">Week #1</td>
<!-- etc..-->
</tr>
<tr>
<td class="rhead"></td>
<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>
<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>
<!-- etc... -->
</tr>
<thead>
</table>
Além disso, quais são os efeitos da posição: fixo, absoluto, etc., têm nas larguras td, se houver? Estou procurando mais uma razão do que uma solução. Espero entender como funciona.
html
css
html-table
Jake
fonte
fonte
display: table-cell
não respeitawidth
(da mesma forma que não funcionaria paradisplay: inline
). Não entendo o que você está perguntandoposition fixed|absolute
Respostas:
Isso pode não ser o que você deseja ouvir, mas
display: table-cell
não respeita a largura e será reduzido com base na largura de toda a mesa. Você pode contornar isso facilmente apenas tendo umdisplay: block
elemento dentro da própria célula da tabela cuja largura você especifica, por exemploIsso não deve fazer muita diferença se o
<table>
próprio forposition: fixed
ou absoluto, porque a posição das células são todas estáticas em relação à tabela.http://jsfiddle.net/ExplosionPIlls/Mkq8L/4/
EDIT: Eu não posso levar o crédito, mas como dizem os comentários, você pode simplesmente usar em
min-width
vez dewidth
na célula da tabela.fonte
min-width
noTD
parece funcionar no Chrome e FF: jsfiddle.net/Mkq8L/7min-width: 300px
funciona! (@TimMedora você foi alguns segundos mais rápido!)min-width
não há nenhum problema, porém, pegue o maior.Você está melhor usando
table-layout: fixed
Auto é o valor padrão e com tabelas grandes pode causar um pouco de atraso no lado do cliente, pois o navegador itera por ele para verificar se todos os tamanhos se encaixam.
Fixed é muito melhor e renderiza mais rápido na página. A estrutura da tabela depende da largura geral da tabela e da largura de cada uma das colunas.
Aqui ele é aplicado ao exemplo original: JSFIDDLE , você notará que as colunas restantes são comprimidas e sobrepondo seu conteúdo. Podemos consertar isso com um pouco mais de CSS (tudo que tive que fazer foi adicionar uma classe ao primeiro TR):
Visto em ação aqui: JSFIDDLE
fonte
O motivo pelo qual isso não funciona no link fornecido é porque você está tentando exibir uma coluna de 300px MAIS 52 colunas com 7 colunas cada. Diminua o número de colunas e funciona. Você não pode caber tantos na tela.
Se você deseja forçar o ajuste das colunas, tente configurar:
veja meu jsfiddle: http://jsfiddle.net/Mkq8L/6/ @mike Não posso comentar ainda.
fonte
A razão é porque você não especificou a largura da mesa e todo o seu conjunto de td's está transbordando.
Por exemplo , dei à mesa uma largura de 5.000 px, que achei que se encaixaria nos seus requisitos.
É exatamente o mesmo código que você forneceu, que apenas adicionei na largura da tabela.
Eu acredito que o que está acontecendo é porque seus TDs ultrapassaram a largura padrão da mesa. O que você pode ver, se retirar cerca de 45 de seus td's em cada tr (ou seja, o código que você forneceu em sua pergunta, não o jsfiddle) funciona perfeitamente bem
fonte
Tente fazer isso funcionar.
fonte
Tente usar
Se você usar Bootstrap, classe
table
temtable-layout: fixed;
por padrão.fonte
Use a propriedade table-layout e o valor "fixo" em sua mesa.
Após configurar toda a largura da mesa, agora você pode configurar a largura em% dos td's.
Você pode aprender mais sobre em neste link: http://www.w3schools.com/cssref/pr_tab_table-layout.asp
fonte
Minha solução maluca.)
fonte
Se a largura da tabela for, por exemplo, 100%, tente usar uma largura de porcentagem em td, como 20%.
fonte
Envolva o conteúdo da primeira célula em div, por exemplo:
HTML:
CSS:
Aqui está um jsfiddle .
fonte
Você também pode usar:
mas isso só acontecerá com alguns navegadores, se bem me lembro o IE8 não permite isso. Acima de tudo, é mais seguro apenas colocar o
width=""
atributo no<td>
próprio.fonte