Frage

Sind diese Codes logisch äquivalent?

<colgroup span="7">
</colgroup>

Und

<col span="7" />

Und

<colgroup>
<col />
<col />
<col />
<col />
<col />
<col />
<col />
</colgroup>

Werden irgendwelche Attribute über HTML oder Eigenschaften über CSS eine gleiche Wirkung haben? Kann Sombody auch "Colgroup" -Tag hinzufügen. Nicht genug Vertreter für mich, um das zu tun.

War es hilfreich?

Lösung

Von dem Spezifikation für <col>:

Kontexte, in denen dieses Element verwendet werden kann:
Als Kind eines Colgroup -Elements, das kein Spannungsattribut hat.
[...]
Inhaltsattribute: Globale Attribute
Spanne

Ich habe das so gelesen, dass das nur gesagt wird <col span="7" /> allein ist ungültig, aber Folgendes:

<colgroup>
    <col span="7" />
</colgroup>

ist gültig und das gleiche wie:

<colgroup span="7">
</colgroup>

Aber wenn die <colgroup> hat ein span Attribut, dann sollte es nicht haben <col> Kinder:

Wenn das ColGroup -Element keine Col -Elemente enthält, kann das Element ein Span -Inhaltsattribut angegeben haben ...

Meine Interpretation (basierend auf dem HTML4 -Spezifikation Mehr als der dünnere html5) ist, dass Sie normalerweise verwenden würden <colgroup span="n"> Es sei denn, Sie mussten eine der Spalten in der Gruppe als in diesem (modifizierten) Beispiel in der HTML4 -Spezifikation unterschiedlich stylen:

<colgroup style="width: 20px; font-weight: bold;">
    <col span="39">
    <col id="format-me-specially" style="width: 35px;">
</colgroup>

Die ersten 39 Spalten würden also auch immer die verwenden <colgroup> Gibt an, aber der 40. könnte optimiert werden. Otoh, ich habe Probleme, Browser dazu zu bringen, diesem (trotz der Spezifikationen sagen) auf jsfiddle.net so ymmv viel Aufmerksamkeit zu schenken.

Andere Tipps

Hier ist meine Interpretation der Spezifikationen. UPDATE: Nachdem ich mir die HTML4 -Spezifikationen angesehen habe, habe ich meine Meinung über die geändert colgroup Element span Attribut.

(Dies ist auch eine Antwort auf meinen eigenen 2. Frage -Kommentar in der Antwort von @Mu.)

EIN colgroup repräsentiert a Gruppe von einer oder mehreren Spalten, und sein span Gibt die Anzahl der Spalten in einer Spaltengruppe an. Ich betrachte es also als eine Abkürzung und rette den Autor vor dem Schreiben mehrerer col Elemente nacheinander.

<colgroup class="x" span="3"></colgroup>

Die Säulengruppe erstreckt sich über drei Spalten und wird gemäß der CSS -Regel gestaltet .x {...}. Dies entspricht zu

<colgroup class="x">
    <col/>
    <col/>
    <col/>
</colgroup>

Auf der anderen Seite, col repräsentiert eine oder mehrere Spalten in der Spaltengruppe, und sein span Gibt die Anzahl der Spalten an, die von der "überspannt" werden COL Element… Was ist eine zyklische Definition, wenn Sie mich fragen.

Ich kann das nur durch das Schreiben interpretieren

<colgroup class="x"><col class="y" span="3"/></colgroup>

Sie sagen, es gibt drei Spalten, jeweils in derselben logischen Gruppierung, so wie .y {...}. Dies ist eine Abkürzung zum Schreiben

<colgroup class="x">
    <col class="y"/>
    <col class="y"/>
    <col class="y"/>
</colgroup>

Ich bin mir nicht sicher, ob es einen spürbaren Unterschied geben würde. Wie alles aussieht, hängt natürlich von Ihrem CSS ab. Aber semantisch sind sie sehr unterschiedlich. Das erste Beispiel repräsentiert drei Spaltengruppen mit jeder Gruppe, die eine Spalte enthält, während das zweite Beispiel eine Gruppe von drei Spalten darstellt.

Nachdem ich das überarbeitet habe, habe ich beschlossen, beide gleich zu sein. Ein ... haben colgroup Spanne n Die Anzahl der Spalten ist die gleiche wie eine colgroup mit einer col Kind, das sich überspannt n Säulen. Meiner Meinung nach gibt es keinen logischen oder semantischen Unterschied.

Notiz: das col Element muss in a enthalten sein colgroup Element, das keine hat span Attribut. Es kann kein direktes Kind der table Element.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top