527 Stimmen

Colspan alle Spalten

Wie kann ich angeben, dass ein td-Tag alle Spalten umfassen soll (wenn die genaue Anzahl der Spalten in der Tabelle variabel/schwer zu bestimmen ist, wenn der HTML-Code gerendert wird)? w3schools erwähnt, dass Sie colspan="0" verwenden können, sagt aber nicht genau, welche Browser diesen Wert unterstützen (IE 6 steht auf unserer Liste der zu unterstützenden Browser).

Es scheint, dass das Festlegen von colspan auf einen Wert größer als die theoretische Anzahl der Spalten, die Sie haben können, funktioniert, aber nicht, wenn Sie table-layout auf fixed setzen. Gibt es Nachteile bei der Verwendung eines automatischen Layouts mit einer großen Anzahl für colspan? Gibt es eine korrektere Möglichkeit, dies zu tun?

4 Stimmen

Die akzeptierte Antwort bezieht sich darauf, wie man dies NICHT tun sollte, und es scheint ernsthafte Leistungs-/Konsistenznachteile zu haben. Also denke ich, die Antwort lautet: Die Anzahl der Spalten festcodieren. Ich sehe keine praktikable Alternative.

2 Stimmen

Tolle Frage, aber du hättest einfach keine Antwort akzeptieren sollen, wenn keine davon richtig ist.

414voto

Cluxter Punkte 4029

Nur dies verwenden:

colspan="100%"

Es funktioniert auf Firefox 3.6, IE 7 und Opera 11! (und ich vermute auf anderen, aber ich konnte es nicht ausprobieren)


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 CSS table-layout: fixed oder mehr als 100 Spalten nicht funktionieren.

20 Stimmen

Getestet [zusätzlich] in IE6 - IE8, Chrome [auf PC und Mac], Firefox 4.0 [PC und Mac], Safari 5 [PC und Mac]

13 Stimmen

Wie ist das immer noch so obskur? Das sollte an jeder Straßenecke gerufen werden!!! Ich habe jetzt schon eine Weile mit diesem verdammten Colspan-Problem gekämpft.

40 Stimmen

Im Chrome und Firefox wird colspan="3%" genauso behandelt wie colspan="3".

311voto

Nahom Tijnam Punkte 4490

Ich habe IE 7.0, Firefox 3.0 und Chrome 1.0

Das colspan="0" Attribut in einem TD spannt NICHT über alle TDs in einem der oben genannten Browser.

Vermutlich nicht als ordentliche Markup-Praxis empfohlen, aber wenn Sie einen höheren colspan-Wert als die Gesamtzahl der möglichen Spalten in anderen Zeilen angeben, dann würde das TD über alle Spalten spannen.

Dies funktioniert NICHT, wenn die table-layout CSS-Eigenschaft auf fixed gesetzt ist.

Nochmals, dies ist nicht die perfekte Lösung, aber es scheint in den oben genannten 3 Browser-Versionen zu funktionieren, wenn die table-layout CSS-Eigenschaft auf automatisch gesetzt ist.

0 Stimmen

Wenn Sie einen strengen Doctype am Anfang des HTML angeben, rendert Firefox 3 das colspan gemäß den HTML 4.01-Spezifikationen erforderlich.

319 Stimmen

Ich bin ein Fan von colspan="42", um den gesamten Bereich zu spannen. Natürlich ist dies ein Problem für >42 Spalten, aber es ist eine der wenigen magischen Zahlen, die ich befürworte.

66 Stimmen

Ich empfehle Ihnen dringend, colspan= einzusetzen. Ich stieß gerade auf einen riesigen Leistungsfehler in Firefox, der mich den ganzen Tag gekostet hat, um herauszufinden. Ein beliebig großes colspan lässt FF an einem großen Tisch mit border-collapse:collapse ersticken. Mein Tisch mit 800 Zeilen und 8 Spalten brauchte 5 Sekunden zum Rendern. Mit dem richtigen colspan ist er wieder auf eine vernünftige 1 Sekunde zurückgegangen. bugzilla.mozilla.org/show_bug.cgi?id=675417

78voto

Wenn Sie eine 'title'-Zelle erstellen möchten, die alle Spalten überspannt und als Kopfzeile für Ihre Tabelle dient, möchten Sie möglicherweise das caption-Tag verwenden (http://www.w3schools.com/tags/tag_caption.asp / https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Dieses Element ist dafür gedacht. Es verhält sich wie ein div, überspannt jedoch nicht die gesamte Breite des Elternelements der Tabelle (wie ein div es an derselben Stelle tun würde (probieren Sie dies nicht zu Hause aus!)), sondern die Breite der Tabelle. Es gibt einige browserübergreifende Probleme mit Rahmen und ähnlichem (das war für mich akzeptabel). Wie auch immer, Sie können es wie eine Zelle gestalten, die alle Spalten überspannt. Darin können Sie Zeilen durch Hinzufügen von div-Elementen erstellen. Ich bin mir nicht sicher, ob Sie es zwischen tr-Elementen einfügen können, aber das wäre wohl ein Hack (also nicht empfohlen). Eine andere Option wäre das Herumspielen mit floatenden divs, aber das ist eklig!

Machen Sie

Machen Sie nicht

2 Stimmen

Genau das habe ich gesucht, um Paginierungssteuerelemente am unteren Rand einer Datentabelle zu platzieren. Es funktioniert perfekt. Vielen Dank.

12 Stimmen

Dies funktioniert nicht, wenn Sie alle Spalten in der Mitte einer Tabelle zusammenfassen möchten. Zum Beispiel als Gruppierungsseparator zwischen verwandten Zeilen. (Chrome)

39voto

Mark Amery Punkte 124946

Als teilweise Antwort hier sind einige Punkte zu colspan="0", die in der Frage erwähnt wurden.

tl;dr Version:

colspan="0" funktioniert in keinem Browser überhaupt. W3Schools liegt falsch (wie üblich). HTML 4 sagte, dass colspan="0" dazu führen soll, dass eine Spalte die gesamte Tabelle überspannt, aber niemand hat dies implementiert und es wurde nach HTML 4 aus dem Standard entfernt.

Weitere Einzelheiten und Beweise:

  • Alle Hauptbrowser behandeln es als Äquivalent zu colspan="1".

    Hier ist eine Demonstration; probiere es in jedem Browser deiner Wahl aus.

    td {
      border: 1px solid black;
    }
    
        ay
        bee
        see
    
        colspan="0"
    
        colspan="1"
    
        colspan="3"
    
        colspan="1000"
  • Der HTML 4-Standard (jetzt alt und veraltet, aber aktuell, als diese Frage gestellt wurde) hat wohl tatsächlich gesagt, dass colspan="0" wie das Überspannen aller Spalten behandelt werden sollte:

    Der Wert Null ("0") bedeutet, dass die Zelle alle Spalten von der aktuellen Spalte bis zur letzten Spalte der Spaltengruppe (COLGROUP) spannt, in der die Zelle definiert ist.

    Die meisten Browser haben dies jedoch nie implementiert.

  • HTML 5.0 (als Kandidatenempfehlung im Jahr 2012 veröffentlicht), der WhatWG HTML Leitfaden (der dominierende Standard heute) und der neueste W3 HTML 5-Standard enthalten alle nicht die oben zitierten Formulierungen aus HTML 4 und stimmen einstimmig darin überein, dass ein colspan von 0 nicht erlaubt ist, mit dieser Formulierung, die in allen drei Standards erscheint:

    Die Elemente td und th können über ein festgelegtes colspan-Attribut verfügen, dessen Wert eine gültige nichtnegative ganze Zahl größer als Null sein muss ...

    Quellen:

  • Die folgenden Aussagen auf der in der Frage verlinkten W3Schools-Seite sind heutzutage - zumindest - vollständig falsch:

    Nur Firefox unterstützt colspan="0", was eine spezielle Bedeutung hat ... [Es] sagt dem Browser, die Zelle bis zur letzten Spalte der Spaltengruppe zu spannen (COLGROUP)

    und

    Unterschiede zwischen HTML 4.01 und HTML5

    KEINE.

    Wenn du noch nicht weißt, dass W3Schools von Webentwicklern aufgrund seiner häufigen Ungenauigkeiten generell verachtet wird, betrachte dies als Lektion dafür.

15 Stimmen

Haha, ich mag es, wie nützliche API-Funktionen einfach komplett entfernt werden, wenn niemand dazu kommt, sie zu implementieren. Erstaunlicher Prozess.

1 Stimmen

Ich habe gerade colspan="0" in Firefox 116 getestet und es scheint colspan="0" nicht zu unterstützen. Soweit ich weiß, gibt es (immer noch) keinen Browser, der colspan="0" unterstützt.

0 Stimmen

@AlbertWiersch das ist zu erwarten - wie ich in der Antwort feststelle, wurde es vor über einem Jahrzehnt aus dem HTML-Spezifikation entfernt und colspan="0" ist seitdem offiziell im HTML-Spezifikation illegal.

14voto

George Stocker Punkte 56164

Für den IE 6 sollten Sie colspan auf die Anzahl der Spalten in Ihrer Tabelle setzen. Wenn Sie 5 Spalten haben, sollten Sie also colspan="5" verwenden.

Der Grund dafür ist, dass der IE colspans anders behandelt, er verwendet die HTML 3.2 Spezifikation:

IE implementiert die HTML 3.2 Definition, es setzt colspan=0 als colspan=1.

Der Bug ist gut dokumentiert.

1 Stimmen

Die Anzahl der Spalten kann variabel sein, ich werde meine Frage aktualisieren, um diese Bemerkung einzuschließen.

0 Stimmen

Während der Ratschlag im oberen Absatz vernünftig erscheint, denke ich, dass viele Details hier nicht ganz richtig sind. Die HTML 3.2 Spezifikation besagt, dass colspans positive Ganzzahlen sein müssen, wodurch colspan=0 ungültig ist; nirgends wird explizit festgelegt, dass colspan=0 als colspan=1 behandelt werden sollte (obwohl ich mir sicher bin, dass dies tatsächlich das ist, was IE 6 macht). Außerdem ist das Zitat nicht (mehr?) auf der Forenseite verfügbar, auf die Sie verlinken, und die meisten Google-Suchergebnisse (jetzt?) behandeln vollständig andere IE 6-colspan-bezogene Fehler.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X