Como especificar que uma td
tag deve abranger todas as colunas (quando a quantidade exata de colunas na tabela será variável / difícil de determinar quando o HTML está sendo renderizado)? O w3schools menciona que você pode usar colspan="0"
, mas não diz exatamente quais navegadores suportam esse valor (o IE 6 está em nossa lista para suporte).
Parece que a configuração colspan
para um valor maior que a quantidade teórica de colunas que você pode ter funcionará, mas não funcionará se você tiver table-layout
definido fixed
. Existem desvantagens em usar um layout automático com um número grande para colspan
? Existe uma maneira mais correta de fazer isso?
html
html-table
tablelayout
Prumo
fonte
fonte
Respostas:
Eu tenho o IE 7.0, Firefox 3.0 e Chrome 1.0
O atributo colspan = "0" em um TD NÃO abrange todos os TDs em qualquer um dos navegadores acima .
Talvez não seja recomendado como prática de marcação adequada, mas se você der um valor maior do colspan do que o total possível não. de colunas em outras linhas , o TD abrangerá todas as colunas.
Isso NÃO funciona quando a propriedade CSS do layout da tabela está definida como fixa.
Mais uma vez, essa não é a solução perfeita, mas parece funcionar nas três versões do navegador acima mencionadas quando a propriedade CSS do layout da tabela é automática . Espero que isto ajude.
fonte
colspan="42"
abranger toda a gama. Obviamente, esse é um problema para mais de 42 colunas, mas é um dos poucos números mágicos que aprovo.Apenas use isto:
Funciona no Firefox 3.6, IE 7 e Opera 11! (e eu acho que nos outros, eu não poderia tentar)
Aviso: conforme mencionado nos comentários abaixo, este é realmente o mesmo que
colspan="100"
. Portanto, essa solução será quebrada para tabelas com csstable-layout: fixed
ou mais de 100 colunas.fonte
colspan="100%"
significa exatamentecolspan="100"
.Se você deseja criar uma célula 'title' que abranja todas as colunas, como cabeçalho da sua tabela, convém usar a tag de legenda ( http://www.w3schools.com/tags/tag_caption.asp / https: // developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Este elemento foi criado para esse fim. Ele se comporta como uma div, mas não abrange toda a largura do pai da tabela (como uma div faria na mesma posição (não tente fazer isso em casa!)); Em vez disso, abrange a largura do mesa. Existem alguns problemas entre navegadores com bordas e coisas assim (era aceitável para mim). De qualquer forma, você pode fazer com que pareça uma célula que abrange todas as colunas. Dentro, você pode criar linhas adicionando elementos div. Não tenho certeza se você pode inseri-lo entre elementos tr, mas isso seria um hack, eu acho (por isso não é recomendado). Outra opção seria brincar com divs flutuantes, mas isso é eca!
Faz
Não
fonte
Como resposta parcial, aqui estão alguns pontos
colspan="0"
mencionados na pergunta.tl; dr versão:
colspan="0"
não funciona em nenhum navegador. O W3Schools está errado (como sempre). O HTML 4 disse que issocolspan="0"
deve fazer com que uma coluna abranja toda a tabela, mas ninguém implementou isso e ela foi removida da especificação após o HTML 4.Mais alguns detalhes e evidências:
Todos os principais navegadores o tratam como equivalente a
colspan="1"
.Aqui está uma demonstração mostrando isso; tente em qualquer navegador que você gosta.
O HTML 4 especificação (agora velha e ultrapassada, mas volta actual quando esta pergunta foi feita) foi de fato dizer que
colspan="0"
deve ser tratado como abrangendo todas as colunas:No entanto, a maioria dos navegadores nunca implementou isso.
O HTML 5.0 (fez uma recomendação de candidato em 2012), o padrão de vida em HTML do WhatWG (o padrão dominante hoje) e as últimas especificações do HTML 5 do W3 não contêm as palavras citadas no HTML 4 acima e concordam unanimemente que um
colspan
de 0 não é permitido, com esta redação que aparece nas três especificações:Fontes:
As seguintes declarações da página do W3Schools vinculadas à pergunta são - pelo menos hoje em dia - completamente falsas:
e
Se você ainda não sabe que o W3Schools geralmente é desprezado pelos desenvolvedores da Web por suas imprecisões frequentes, considere esta uma lição do porquê.
fonte
Para o IE 6, você deseja igualar colspan ao número de colunas na sua tabela. Se você tem 5 colunas, então você vai querer:
colspan="5"
.A razão é que IE manipula colspans de maneira diferente, ele usa a especificação HTML 3.2:
O bug está bem documentado .
fonte
colspan
s devem ser números inteiros positivos , o que tornacolspan=0
ilegal; em nenhum lugar dita explicitamente quecolspan=0
deve ser tratado comocolspan=1
(embora eu tenha certeza de que é realmente o que o IE 6 faz). Além disso, a citação não está mais (em algum lugar?) Em qualquer lugar da página do fórum ao qual você vincula, e a maioria dos resultados de pesquisa do Google (agora?) São sobre bugs relacionados ao colspan do IE 6 totalmente diferentes .Se você estiver usando jQuery (ou não se importa de adicioná-lo), isso fará o trabalho melhor do que qualquer um desses hacks.
Para facilitar a implementação, eu decido qualquer td / é necessário que seja ajustado com uma classe como "maxCol", e posso fazer o seguinte:
Se você encontrar uma implementação para a qual não funcionará, não responda, explique nos comentários e eu atualizarei se puder ser coberto.
fonte
Outra solução útil, porém feia: em
colspan="100"
que 100 é um valor maior que o total de colunas, é necessáriocolspan
.De acordo com o W3C, a
colspan="0"
opção é válida apenas comCOLGROUP
tag.fonte
<td>
que você tenhacolspan="0"
(consulte w3.org/TR/REC-html40/struct/tables.html#adef-colspan ), enquanto o HTML 5.0 não permitespan="0"
umcolgroup
(consulte w3.org/TR/html50/tabular- data.html # attr-colgroup-span, que afirma que "um valor de atributo de conteúdo de extensão ['s] deve ser um número inteiro não negativo válido maior que zero." ).Abaixo está uma solução es6 concisa (semelhante à resposta de Rainbabba, mas sem o jQuery).
fonte
Só quero adicionar minha experiência e responder a isso.
Nota: Funciona apenas quando você tem um pré-definido
table
e umtr
comth
s, mas está carregando em suas linhas (por exemplo, por meio de AJAX) dinamicamente.Nesse caso, você pode contar o número de
th
's' existentes na sua primeira linha do cabeçalho e usá-lo para abranger toda a coluna.Isso pode ser necessário quando você deseja retransmitir uma mensagem quando nenhum resultado foi encontrado.
Algo assim no jQuery, onde
table
está sua tabela de entrada:fonte
th
s não é necessariamente o número de colunas, pois algumas delas podem ter umcolspan
conjunto e, portanto, isso não funcionará como está escrito para todos.Talvez eu seja um pensador direto, mas estou um pouco confuso, você não sabe o número da coluna da sua mesa?
A propósito, o IE6 não respeita o colspan = "0", com ou sem um grupo de colunas definido. Tentei também usar thead e th para gerar os grupos de colunas, mas o navegador não reconhece o formulário colspan = "0".
Eu tentei com o Firefox 3.0 no Windows e Linux e ele funciona apenas com um doctype estrito.
Você pode verificar um teste em vários navegadores em
http://browsershots.org/http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Encontrei a página de teste aqui http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Editar: copie e cole o link, a formatação não aceitará as partes do protocolo duplo no link (ou não sou tão inteligente para formatá-lo corretamente).
fonte
De acordo com a especificação
colspan="0"
deve resultar em uma largura de tabela td.No entanto, isso só é verdade se sua tabela tiver uma largura! Uma tabela pode conter linhas de diferentes larguras. Portanto, o único caso em que o representante sabe a largura da tabela se você definir um grupo de colunas ! Caso contrário, o resultado de colspan = "0" é indeterminável ...
http://www.w3.org/TR/REC-html40/struct/tables.html#adef-colspan
Não consigo testá-lo em navegadores antigos, mas isso faz parte da especificação desde a versão 4.0 ...
fonte
colspan
de 0 foi feita ilegal. O w3.org/TR/html50/… (a especificação do HTML 5.0) e o html.spec.whatwg.org/multipage/… (o mais recente padrão de vida do WhatWG HTML) afirmam quecolspan
deve ser maior que zero. E, como observado em outras respostas aqui, os navegadores nunca realmente implementaram o antigo comportamento HTML 4 que você cita.tente usar "colSpan" em vez de "colspan". O IE gosta da versão camelBack ...
fonte