Comment puis-je spécifier qu'une td
balise doit couvrir toutes les colonnes (lorsque le nombre exact de colonnes dans le tableau sera variable / difficile à déterminer quand le HTML est rendu)? w3schools mentionne que vous pouvez utiliser colspan="0"
, mais il ne dit pas exactement quels navigateurs prennent en charge cette valeur (IE 6 est dans notre liste à prendre en charge).
Il semble que la définition colspan
d'une valeur supérieure à la quantité théorique de colonnes que vous pourriez avoir fonctionnera, mais elle ne fonctionnera pas si vous l'avez table-layout
définie sur fixed
. Y a-t-il des inconvénients à utiliser une mise en page automatique avec un grand nombre pour colspan
? Existe-t-il une manière plus correcte de procéder?
Réponses:
J'ai IE 7.0, Firefox 3.0 et Chrome 1.0
L'attribut colspan = "0" dans un TD ne couvre PAS tous les TD dans l' un des navigateurs ci-dessus .
Peut-être pas recommandé comme bonne pratique de balisage, mais si vous donnez une valeur de colspan supérieure au total possible, non. de colonnes dans d'autres rangées , alors le TD couvrirait toutes les colonnes.
Cela ne fonctionne PAS lorsque la propriété CSS de mise en page est définie sur fixed.
Encore une fois, ce n'est pas la solution parfaite mais semble fonctionner dans les 3 versions de navigateur mentionnées ci-dessus lorsque la propriété CSS de mise en page est automatique . J'espère que cela t'aides.
la source
colspan="42"
couvrir toute la gamme. Évidemment, c'est un problème pour> 42 colonnes, mais c'est l'un des rares nombres magiques que j'approuve.Utilisez simplement ceci:
Cela fonctionne sur Firefox 3.6, IE 7 et Opera 11! (et je suppose que sur les autres, je n'ai pas pu essayer)
Attention: comme mentionné dans les commentaires ci-dessous, c'est en fait la même chose que
colspan="100"
. Par conséquent, cette solution se cassera pour les tables avec csstable-layout: fixed
ou plus de 100 colonnes.la source
colspan="100%"
signifie exactementcolspan="100"
.Si vous souhaitez créer une cellule «titre» qui couvre toutes les colonnes, comme en-tête de votre tableau, vous pouvez utiliser la balise de légende ( http://www.w3schools.com/tags/tag_caption.asp / https: // developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Cet élément est destiné à cet effet. Il se comporte comme un div, mais ne couvre pas toute la largeur du parent de la table (comme un div le ferait dans la même position (n'essayez pas cela à la maison!)), Au lieu de cela, il s'étend sur la largeur du table. Il y a des problèmes de navigation entre les navigateurs et autres (c'était acceptable pour moi). Quoi qu'il en soit, vous pouvez lui donner l'apparence d'une cellule qui s'étend sur toutes les colonnes. Dans, vous pouvez créer des lignes en ajoutant des éléments div. Je ne sais pas si vous pouvez l'insérer entre les éléments tr, mais ce serait un hack je suppose (donc pas recommandé). Une autre option serait de jouer avec les divs flottants, mais c'est beurk!
Faire
Ne le fais pas
la source
En guise de réponse partielle, voici quelques points à propos de
colspan="0"
ce qui a été mentionné dans la question.tl; version dr:
colspan="0"
ne fonctionne dans aucun navigateur. W3Schools a tort (comme d'habitude). HTML 4 a dit que celacolspan="0"
devrait entraîner une colonne sur toute la table, mais personne n'a implémenté cela et il a été supprimé de la spécification après HTML 4.Quelques détails et preuves supplémentaires:
Tous les principaux navigateurs le traitent comme équivalent à
colspan="1"
.Voici une démo montrant cela; essayez-le sur n'importe quel navigateur que vous aimez.
La spécification HTML 4 (maintenant ancienne et obsolète, mais actuelle lorsque cette question a été posée) a en effet dit que cela
colspan="0"
devrait être traité comme s'étendant sur toutes les colonnes:Cependant, la plupart des navigateurs ne l'ont jamais implémenté.
HTML 5.0 (a fait une recommandation de candidat en 2012), le standard de vie WhatWG HTML (le standard dominant aujourd'hui) et la dernière spécification W3 HTML 5 ne contiennent pas tous le libellé cité dans HTML 4 ci-dessus, et conviennent à l'unanimité qu'un
colspan
de 0 n'est pas autorisé, avec cette formulation qui apparaît dans les trois spécifications:Sources:
Les affirmations suivantes de la page W3Schools liées à la question sont - au moins de nos jours - complètement fausses:
et
Si vous n'êtes pas déjà au courant que W3Schools est généralement méprisé par les développeurs Web pour ses inexactitudes fréquentes, considérez ceci comme une leçon pour savoir pourquoi.
la source
Pour IE 6, vous souhaiterez égaler colspan au nombre de colonnes de votre table. Si vous avez 5 colonnes, vous aurez envie:
colspan="5"
.La raison en est que IE gère les colspans différemment, il utilise la spécification HTML 3.2:
Le bug est bien documenté .
la source
colspan
s doit être un entier positif , ce qui rendcolspan=0
illégal; nulle part cela ne dicte explicitement que celacolspan=0
devrait être géré commecolspan=1
(bien que je suis sûr que c'est en fait ce que fait IE 6). De plus, la citation ne se trouve (plus?) Nulle part sur la page du forum vers laquelle vous accédez, et la plupart des résultats de recherche Google (maintenant?) Concernent des bogues liés à IE 6 colspan entièrement différents .Si vous utilisez jQuery (ou que cela ne vous dérange pas de l'ajouter), cela fera mieux le travail que n'importe lequel de ces hacks.
Pour faciliter l'implémentation, je décore tout td / th dont j'ai besoin ajusté avec une classe telle que "maxCol" puis je peux faire ce qui suit:
Si vous trouvez une implémentation qui ne fonctionnera pas, ne claquez pas la réponse, expliquez dans les commentaires et je mettrai à jour si elle peut être couverte.
la source
Une autre solution fonctionnelle mais laide:,
colspan="100"
où 100 est une valeur supérieure au nombre total de colonnes dont vous avez besoincolspan
.Selon le W3C, l'
colspan="0"
option n'est valable qu'avecCOLGROUP
tag.la source
<td>
s d'avoircolspan="0"
(voir w3.org/TR/REC-html40/struct/tables.html#adef-colspan ), tandis que HTML 5.0 ne permet passpan="0"
sur uncolgroup
(voir w3.org/TR/html50/tabular- data.html # attr-colgroup-span qui stipule que "la valeur d'un attribut de contenu span ['s] doit être un entier non négatif valide supérieur à zéro." ).Ci-dessous, une solution es6 concise (similaire à la réponse de Rainbabba mais sans le jQuery).
la source
Je veux juste ajouter mon expérience et répondre à cela.
Remarque: Cela ne fonctionne que lorsque vous avez un prédéfini
table
et untr
avecth
s, mais que vous chargez dynamiquement vos lignes (par exemple via AJAX).Dans ce cas, vous pouvez compter le nombre de
th
s dans votre première ligne d'en-tête et l'utiliser pour couvrir toute la colonne.Cela peut être nécessaire lorsque vous souhaitez relayer un message alors qu'aucun résultat n'a été trouvé.
Quelque chose comme ça dans jQuery, où
table
est votre table d'entrée:la source
th
s n'est pas nécessairement le nombre de colonnes, car certaines d'entre elles peuvent avoir uncolspan
ensemble, et donc cela ne fonctionnera pas comme écrit pour tout le monde.Je suis peut-être un simple penseur mais je suis un peu perplexe, ne connaissez-vous pas le numéro de colonne de votre table?
Par ailleurs, IE6 n'honore pas le colspan = "0", avec ou sans définition d'un colgroup. J'ai également essayé d'utiliser thead et th pour générer les groupes de colonnes mais le navigateur ne reconnaît pas la forme colspan = "0".
J'ai essayé avec Firefox 3.0 sur Windows et Linux et cela ne fonctionne qu'avec un doctype strict.
Vous pouvez vérifier un test sur plusieurs bowser à
http://browsershots.org/http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
J'ai trouvé la page de test ici http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Modifier: veuillez copier et coller le lien, le formatage n'acceptera pas les parties à double protocole dans le lien (ou je ne suis pas si intelligent pour le formater correctement).
la source
Selon la spécification, il
colspan="0"
devrait en résulter une largeur de table td.Cependant, cela n'est vrai que si votre table a une largeur! Une table peut contenir des lignes de différentes largeurs. Donc, le seul cas où le rendu connaît la largeur de la table si vous définissez un colgroup ! Sinon, le résultat de colspan = "0" est indéterminable ...
http://www.w3.org/TR/REC-html40/struct/tables.html#adef-colspan
Je ne peux pas le tester sur des navigateurs plus anciens, mais cela fait partie des spécifications depuis 4.0 ...
la source
colspan
0 a été rendu illégal. Les deux w3.org/TR/html50/... (la spécification HTML 5.0) et html.spec.whatwg.org/multipage/... (la dernière norme HTML Living WhatWG) état quicolspan
doit être supérieur à zéro. Et comme indiqué dans d'autres réponses ici, les navigateurs n'ont jamais réellement mis en œuvre l'ancien comportement HTML 4 que vous citez.essayez d'utiliser "colSpan" au lieu de "colspan". IE aime la version camelBack ...
la source