Eu tenho um número indeterminado de elementos de célula de tabela dentro de um contêiner de tabela.
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
Existe uma maneira CSS pura de obter que as células da tabela tenham largura igual, mesmo que tenham conteúdo de tamanho diferente?
Obrigado.
Edit: Ter uma largura máxima implicaria saber quantas células você tem, eu acho?
html
css
html-table
atormentar
fonte
fonte
Respostas:
Aqui está um violino que funciona com número indeterminado de células: http://jsfiddle.net/r9yrM/1/
Você pode fixar uma largura para cada pai
div
(a tabela ), caso contrário, será 100% como de costume.O truque é usar
table-layout: fixed;
e alguma largura em cada célula para acioná-lo, aqui 2%. Isso acionará o outro algoritmo da tabela, aquele em que os navegadores tentam muito respeitar as dimensões indicadas.Teste com o Chrome (e IE8, se necessário). Tudo bem com um Safari recente, mas não me lembro da compatibilidade desse truque com eles.
CSS (instruções relevantes):
EDIT (2013): Cuidado com o Safari 6 no OS X, ele está
table-layout: fixed;
errado (ou talvez apenas diferente, muito diferente de outros navegadores. Não fiz a revisão do layout da tabela CSS2.1 REC;)). Esteja preparado para resultados diferentes.fonte
div
s adicionaisdisplay:table
sejam usados como se fossem linhas, nãodisplay:tabl-row
como alguns podem esperar. Exemplo aqui ..my-cell { width: 100%; }; @media screen and (min-width:0\0) { .my-cell { width: 1%; } }
O hack CSS é a partir daqui: stackoverflow.com/a/24321386/6962HTML
CSS
DEMO.
fonte
Apenas usar
max-width: 0
odisplay: table-cell
elemento funcionou para mim:fonte
0px
não é uma unidade válida. Deveria ser apenas0
.Substituir
com
Veja todos os problemas relacionados à tentativa de fazer com que os divs funcionem como tabelas. Eles tiveram que adicionar table-xxx para imitar layouts de tabela
As tabelas são suportadas e funcionam muito bem em todos os navegadores. Por que abandoná-los? o fato de que eles precisavam imitá-los é uma prova de que eles cumpriram bem o seu trabalho.
Na minha opinião, use a melhor ferramenta para o trabalho e, se você quiser dados tabulados ou algo parecido com tabelas de dados tabulados, basta trabalhar.
Resposta muito tardia, eu sei, mas vale a pena expressar.
fonte
<nav>
,<ul>
etc.display: table-etc
(naturalmente). Não passo meus dias criando links que imitam divs ou divs que imitam tabelas, extensões ou entradas: estou apenas usando CSS para estilizar. Finalmente, boa sorte com o IE9 por aplicar qualquer outro valor dadisplay
propriedade aos elementos table, tr, td.isso vai funcionar para todos
Isso também funcionará para dados da tabela criados pela iteração
fonte
Aqui está:
http://jsfiddle.net/damsarabi/gwAdA/
Você não pode usar width: 100px, porque a exibição é célula de tabela. No entanto, você pode usar Largura máxima: 100px. sua caixa nunca ficará maior que 100 px. mas você precisa adicionar overflow: hidden para garantir que o conteúdo não sangre para outras células. você também pode adicionar espaço em branco: nowrap se desejar impedir que a altura aumente.
fonte
Isso pode ser feito configurando o estilo da célula da tabela como
width: auto
e o conteúdo vazio. As colunas agora têm a mesma largura, mas não contêm conteúdo.Para inserir conteúdo na célula, adicione um
div
com css:Você também precisa adicionar
position: relative
às células.Agora você pode colocar o conteúdo real na div mencionada acima.
https://jsfiddle.net/vensdvvb/
fonte