Wie kann ich angeben, dass ein td
Tag alle Spalten umfassen soll (wenn die genaue Anzahl der Spalten in der Tabelle variabel ist / schwer zu bestimmen ist, wann der HTML-Code gerendert wird)? w3schools erwähnt, dass Sie verwenden können colspan="0"
, aber es sagt nicht genau, welche Browser diesen Wert unterstützen (IE 6 ist in unserer Liste zu unterstützen).
Es scheint , diese Einstellung colspan
auf einen Wert größer als die theoretische Menge von Spalten , die Sie arbeiten werden, aber es wird nicht funktionieren , wenn Sie table-layout
auf fixed
. Gibt es irgendwelche Nachteile bei der Verwendung eines automatischen Layouts mit einer großen Anzahl für colspan
? Gibt es einen korrekteren Weg, dies zu tun?
Antworten:
Ich habe IE 7.0, Firefox 3.0 und Chrome 1.0
Das Attribut colspan = "0" in einem TD erstreckt sich NICHT über alle TDs in einem der oben genannten Browser .
Möglicherweise nicht als richtige Markup-Übung empfohlen, aber wenn Sie einen höheren Colspan-Wert als den insgesamt möglichen Nein-Wert angeben. von Spalten in anderen Zeilen würde dann der TD alle Spalten überspannen.
Dies funktioniert NICHT, wenn die CSS-Eigenschaft für das Tabellenlayout auf "fest" gesetzt ist.
Dies ist wiederum nicht die perfekte Lösung, scheint jedoch in den oben genannten 3 Browserversionen zu funktionieren, wenn die CSS-Eigenschaft für das Tabellenlayout automatisch ist . Hoffe das hilft.
quelle
colspan="42"
, das gesamte Sortiment zu überspannen. Natürlich ist dies ein Problem für> 42 Spalten, aber es ist eine der wenigen magischen Zahlen, die ich gutheiße.Verwenden Sie einfach dies:
Es funktioniert unter Firefox 3.6, IE 7 und Opera 11! (und ich denke bei anderen konnte ich es nicht versuchen)
Warnung: Wie in den Kommentaren unten erwähnt, ist dies tatsächlich dasselbe wie
colspan="100"
. Daher wird diese Lösung für Tabellen mit CSStable-layout: fixed
oder mehr als 100 Spalten unterbrochen .quelle
colspan="100%"
bedeutet genaucolspan="100"
.Wenn Sie als Titel für Ihre Tabelle eine Titelzelle erstellen möchten, die alle Spalten umfasst, können Sie das Untertitel-Tag ( http://www.w3schools.com/tags/tag_caption.asp / https: //) verwenden developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Dieses Element ist für diesen Zweck gedacht. Es verhält sich wie ein Div, erstreckt sich jedoch nicht über die gesamte Breite des übergeordneten Tisches der Tabelle (wie es ein Div an derselben Position tun würde (versuchen Sie dies nicht zu Hause!)), Sondern über die gesamte Breite des Tabelle. Es gibt einige browserübergreifende Probleme mit Rahmen und dergleichen (war für mich akzeptabel). Wie auch immer, Sie können es als eine Zelle aussehen lassen, die alle Spalten umfasst. Innerhalb können Sie Zeilen erstellen, indem Sie div-Elemente hinzufügen. Ich bin mir nicht sicher, ob Sie es zwischen tr-Elementen einfügen können, aber das wäre ein Hack, denke ich (also nicht empfohlen). Eine andere Möglichkeit wäre, mit schwebenden Divs herumzuspielen, aber das ist igitt!
Tun
Tu es nicht
quelle
Als Teilantwort hier ein paar Punkte
colspan="0"
, die in der Frage erwähnt wurden.tl; dr version:
colspan="0"
funktioniert in keinem Browser. W3Schools ist falsch (wie üblich). HTML 4 sagte,colspan="0"
dass eine Spalte die gesamte Tabelle überspannen sollte, aber niemand hat dies implementiert und es wurde nach HTML 4 aus der Spezifikation entfernt.Einige weitere Details und Beweise:
Alle gängigen Browser behandeln es als gleichwertig mit
colspan="1"
.Hier ist eine Demo, die dies zeigt. Probieren Sie es in einem beliebigen Browser aus.
Die HTML 4-Spezifikation (jetzt alt und veraltet, aber aktuell, als diese Frage gestellt wurde) sagte tatsächlich, dass
colspan="0"
dies so behandelt werden sollte , dass es alle Spalten umfasst:Die meisten Browser haben dies jedoch nie implementiert.
HTML 5.0 (eine Empfehlung von Kandidaten aus dem Jahr 2012), der WhatWG HTML-Lebensstandard (der heute vorherrschende Standard) und die neueste W3 HTML 5-Spezifikation enthalten nicht den oben in HTML 4 zitierten Wortlaut und stimmen einstimmig zu, dass a
colspan
0 ist ist nicht erlaubt, mit diesem Wortlaut, der in allen drei Spezifikationen vorkommt:Quellen:
Die folgenden Behauptungen der in der Frage verlinkten W3Schools-Seite sind - zumindest heutzutage - völlig falsch:
und
Wenn Sie nicht bereits wissen, dass W3Schools von Webentwicklern wegen ihrer häufigen Ungenauigkeiten im Allgemeinen verachtet wird, sollten Sie dies als eine Lektion in Bezug auf das Warum betrachten.
quelle
Für IE 6 möchten Sie colspan der Anzahl der Spalten in Ihrer Tabelle entsprechen. Wenn Sie 5 Spalten haben, möchten Sie :
colspan="5"
.Der Grund dafür ist, dass der IE Colspans unterschiedlich behandelt und die HTML 3.2-Spezifikation verwendet:
Der Fehler ist gut dokumentiert .
quelle
colspan
s positive ganze Zahlen sein muss, wascolspan=0
illegal macht . Nirgendwo wird ausdrücklich vorgeschrieben, dasscolspan=0
dies so behandelt werden sollcolspan=1
(obwohl ich sicher bin, dass dies tatsächlich das ist, was IE 6 tut). Außerdem befindet sich das Zitat (nicht mehr?) Nirgendwo auf der Forenseite, auf die Sie verlinken, und die meisten Google-Suchergebnisse (jetzt?) Beziehen sich auf völlig andere Fehler im Zusammenhang mit IE 6 Colspan.Wenn Sie jQuery verwenden (oder nichts dagegen haben, es hinzuzufügen), wird dies die Arbeit besser erledigen als jeder dieser Hacks.
Um die Implementierung zu vereinfachen, dekoriere ich jedes td / th, das ich anpassen muss, mit einer Klasse wie "maxCol". Dann kann ich Folgendes tun:
Wenn Sie eine Implementierung finden, für die dies nicht funktioniert, schlagen Sie die Antwort nicht zu, erklären Sie sie in Kommentaren, und ich werde sie aktualisieren, wenn sie abgedeckt werden kann.
quelle
Eine andere funktionierende, aber hässliche Lösung:
colspan="100"
wobei 100 ein Wert ist, der größer ist als die Gesamtzahl der Spalten, die Sie benötigencolspan
.Laut W3C ist die
colspan="0"
Option nur mitCOLGROUP
Tag gültig .quelle
<td>
s habencolspan="0"
(siehe w3.org/TR/REC-html40/struct/tables.html#adef-colspan ), während HTML 5.0 nicht zulässt , dassspan="0"
auf eincolgroup
(siehe w3.org/TR/html50/tabular- data.html # attr-colgroup-span, der besagt, dass "der Wert eines span-Inhaltsattributs ['s] eine gültige nicht negative Ganzzahl größer als Null sein muss." ).Im Folgenden finden Sie eine kurze es6-Lösung (ähnlich der Antwort von Rainbabba, jedoch ohne jQuery).
quelle
Ich möchte nur meine Erfahrung hinzufügen und darauf antworten.
Hinweis: Dies funktioniert nur, wenn Sie ein vordefiniertes
table
und eintr
mitth
s haben, aber dynamisch in Ihre Zeilen geladen werden (z. B. über AJAX).In diesem Fall können Sie die Anzahl der
th
in Ihrer ersten Kopfzeile vorhandenen zählen und diese verwenden, um die gesamte Spalte zu überspannen.Dies kann erforderlich sein, wenn Sie eine Nachricht weiterleiten möchten, wenn keine Ergebnisse gefunden wurden.
So etwas in jQuery, wo
table
ist Ihre Eingabetabelle:quelle
th
s ist nicht unbedingt die Anzahl der Spalten, da einige von ihnen möglicherweise einencolspan
Satz haben. Dies funktioniert also nicht für alle geschrieben.Vielleicht bin ich ein klarer Denker, aber ich bin ein bisschen verwirrt. Kennst du nicht die Spaltennummer deiner Tabelle?
Übrigens berücksichtigt IE6 nicht das colspan = "0", mit oder ohne definierte colgroup. Ich habe auch versucht, mit thead und th die Spaltengruppen zu generieren, aber der Browser erkennt die Form colspan = "0" nicht.
Ich habe es mit Firefox 3.0 unter Windows und Linux versucht und es funktioniert nur mit einem strengen Doctype.
Sie können einen Test auf mehreren Bowsern unter überprüfen
http://browsershots.org/http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Ich fand die Testseite hier http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Bearbeiten: Bitte kopieren Sie den Link und fügen Sie ihn ein. Die Formatierung akzeptiert nicht die doppelten Protokollteile im Link (oder ich bin nicht so schlau, ihn richtig zu formatieren).
quelle
Entsprechend der Spezifikation
colspan="0"
sollte sich eine Tabellenbreite td ergeben.Dies gilt jedoch nur, wenn Ihr Tisch eine Breite hat! Eine Tabelle kann Zeilen unterschiedlicher Breite enthalten. Der einzige Fall, in dem der Renderer die Breite der Tabelle kennt, wenn Sie eine Spaltengruppe definieren ! Andernfalls ist das Ergebnis von colspan = "0" unbestimmbar ...
http://www.w3.org/TR/REC-html40/struct/tables.html#adef-colspan
Ich kann es nicht mit älteren Browsern testen, aber dies ist Teil der Spezifikation seit 4.0 ...
quelle
colspan
von 0 wurde illegal gemacht. Sowohl w3.org/TR/html50/… (die HTML 5.0-Spezifikation) als auch html.spec.whatwg.org/multipage/… (der neueste WhatWG HTML Living Standard)colspan
müssen größer als Null sein. Und wie in anderen Antworten hier erwähnt, haben Browser das alte HTML 4-Verhalten, das Sie zitieren, nie implementiert.Versuchen Sie es mit "colSpan" anstelle von "colspan". IE mag die camelBack Version ...
quelle