Атрибут Span для colgroup и col - PullRequest
3 голосов
/ 11 июня 2011

Являются ли эти коды логически эквивалентными?

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

И

<col span="7" />

И

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

Будут ли любые атрибуты через HTML или свойства через CSS иметь одинаковый эффект?Может кто-нибудь также добавить тег "colgroup".Мне не хватает представителя, чтобы сделать это.

Ответы [ 2 ]

5 голосов
/ 13 июня 2011

Из спецификации для <col>:

Контексты, в которых этот элемент может использоваться:
Как дочерний элемент элемента colgroup, у которого нет атрибута span.
[...]
Атрибуты содержимого: Глобальные атрибуты
пролет

Я прочитал это как высказывание, что просто <col span="7" /> само по себе недопустимо, но это:

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

действует так же, как:

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

Однако, если <colgroup> имеет атрибут span , то он не должен иметь <col> children:

Если элемент colgroup не содержит элементов col, то для элемента может быть указан атрибут содержимого span ...

Моя интерпретация (основанная на спецификации HTML4 * на 1037 * больше, чем на более тонкой HTML5) заключается в том, что вы обычно используете <colgroup span="n">, если вам не нужно стилизовать один из столбцов в группе иначе, как в этом измененный) пример из спецификации HTML4:

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

поэтому первые 39 столбцов будут использовать все, что указано в <colgroup>, но 40-й может быть изменен. OTOH, у меня проблемы с тем, чтобы браузеры обращали много внимания на все это (несмотря на то, что говорят спецификации) на jsfiddle.net, так что YMMV.

2 голосов
/ 19 января 2012

Вот моя интерпретация спецификаций. Обновление: после просмотра спецификаций HTML4 я передумал об атрибуте span элемента colgroup.

(Это также ответ на мой второй комментарий к вопросу)в ответе @ mu.)

A colgroup представляет группу из одного или нескольких столбцов , а ее span указывает количество столбцов в группе столбцов .Поэтому я думаю, что это ярлык, который избавляет автора от последовательного написания нескольких элементов col.

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

Группа столбцов охватывает три столбца и оформляется в соответствии с правилом CSS .x {...}.Это эквивалентно

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

С другой стороны, col представляет один или несколько столбцов в группе столбцов , а span указывает количество столбцов«охвачен» элементом COL … который является циклическим определением, если вы спросите меня.

Единственный способ, которым я могу интерпретировать это, состоит в том, что, написав

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

выВы говорите, что есть три столбца, каждый в одной логической группировке, стилизованных одинаково в соответствии с .y {...}.Это ярлык для написания

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

С точки зрения презентации, я не уверен, что будет заметная разница.Как все это выглядит, конечно, зависит от вашего CSS.Но семантически они очень разные.Первый пример представляет три группы столбцов, каждая из которых содержит один столбец, тогда как второй пример представляет одну группу из трех столбцов.

Переосмыслив это, я решил, что они оба одинаковы,Количество столбцов в colgroup span n такое же, как в случае одного colgroup с дочерним элементом col, который охватывает n столбцов.На мой взгляд, нет логической или семантической разницы.

Примечание: элемент col должен содержаться в элементе colgroup, который не имеет атрибута span.Возможно, он не является прямым потомком элемента table .

...