Pregunta

¿Son estos códigos lógicamente equivalentes?

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

Y

<col span="7" />

Y

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

¿Algún atributo a través de HTML o propiedades a través de CSS tendrá el mismo efecto? ¿Puede Sombody también agregar la etiqueta "colgroup"? No hay suficiente representante para que haga eso.

¿Fue útil?

Solución

Desde el especificación para <col>:

Contextos en los que se puede usar este elemento:
Como hijo de un elemento colgroup que no tiene un atributo de tramo.
[...]
Atributos de contenido: Atributos globales
lapso

Leí eso diciendo que solo <col span="7" /> por sí solo no es válido pero esto:

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

es válido y lo mismo que:

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

Sin embargo, si el <colgroup> tiene un span atributo, entonces no debería tener <col> niños:

Si el elemento colgroup no contiene elementos COL, entonces el elemento puede tener un atributo de contenido SPAN especificado ...

Mi interpretación (basada en el Especificación HTML4 más que el más delgado HTML5) es que generalmente usaría <colgroup span="n"> A menos que necesite diseñar una de las columnas en el grupo de manera diferente, como en este ejemplo (modificado) de la especificación HTML4:

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

Entonces las primeras 39 columnas usarían lo que sea el <colgroup> Especifica pero el 40 podría modificarse. OTOH, tengo problemas para hacer que los navegadores presten mucha atención a todo esto (a pesar de lo que dicen las especificaciones) en jsfiddle.net, así que ymmv.

Otros consejos

Aquí está mi interpretación de las especificaciones. Actualización: después de mirar las especificaciones de HTML4, he cambiado de opinión sobre el colgroup elementos span atributo.

(Esto también es en respuesta a mi propio comentario de la segunda pregunta en la respuesta de @Mu).

A colgroup representa un grupo de una o más columnas, y es span Especifica el número de columnas en un grupo de columnas. Así que pienso en ello como un atajo, salvando al autor de escribir múltiples col elementos en sucesión.

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

El grupo de columna abarca en tres columnas y se diseña de acuerdo con la regla CSS .x {...}. Esto es equivalente a

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

Por otra parte, col representa una o más columnas en el grupo de columnas, y es span Especifica el número de columnas "abarcadas" por el COL elemento... que es una definición cíclica si me preguntas.

La única forma en que puedo interpretar esto es que escribiendo

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

Estás diciendo que hay tres columnas, cada una en la misma agrupación lógica, diseñadas de la misma manera según .y {...}. Este es un atajo para escribir

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

Presentalmente, no estoy seguro de que haya una diferencia notable. Cómo se ve todo depende de su CSS, por supuesto. Pero semánticamente, son muy diferentes. El primer ejemplo representa tres grupos de columnas con cada grupo que contiene una columna, mientras que el segundo ejemplo representa un grupo de tres columnas.

Después de repensar esto, he decidido que ambos son iguales. Teniendo un colgroup lapso n El número de columnas es el mismo que tener una colgroup con un col Niño que abarca n columnas. No hay diferencia lógica o semántica en mi opinión.

Nota: la col elemento deber estar contenido en un colgroup elemento que no tiene span atributo. Puede que no sea un niño directo del table elemento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top