2011-06-11 21 views
2

这些代码在逻辑上等价吗?colgroup和col上的跨度属性

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

而且

<col span="7" /> 

而且

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

将通过CSS通过HTML或性质的任何属性具有同等效力? sombody也可以添加“colgroup”标签。没有足够的代表让我这样做。

回答

3

specification for <col>

上下文中,这个元素可用于:
由于不具有跨度属性colgroup元素的一个孩子。
[...]
内容属性: 全局属性
跨度

我读的话说,只是<col span="7" />自身是无效的,但这样的:

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

是有效和相同:

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

但是,如果<colgroup> has a span attribute,那么它不应该有<col>孩子:

如果colgroup元素不包含COL元素,则该元素可以指定一个跨度内容属性...

我的解释(根据HTML4 specification而不是更薄的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上关注这些(尽管规格说明)。

+0

即使我们添加一个“col”,browsres也会自动添加“colgroup”,所以看起来“col”不能在“表”中存在,并且必须是“colgroup”的子节点如果你添加它或不。看起来他们只是两种做同样事情的方式。基本上是“表列”的HTML选择器感谢您的答案和你的时间。 – Jawad 2011-06-13 16:34:18

+0

@Jawad:我不会依赖于浏览器添加任何东西(或者,一般来说,始终是合理的:)在浏览器达到它之前,您可能更安全,确保您的嵌套是正确的。 – 2011-06-13 17:27:16

+0

@亩太短:是的,你是对的。添加“colgroup”会更安全。在旁注中,完全脱离主题,你的名字中的这个“mu”是否和Zen中的“mu”一样!也就是说,与二重性原则和逻辑中的排除中间律相反(Sombody问一位禅师,一只狗是否有禅?师父回答说,“mu”)。 – Jawad 2011-06-13 18:21:00

1

这是我对规格的解释。 更新:在查看HTML4规范后,我改变了关于colgroup元素的span属性的想法。

(这也是以响应@亩的回答我的第二问题发表评论。)

一个colgroup代表group of one or more columns,其spanspecifies the number of columns in a column group。所以我认为它是一个捷径,可以让作者连续编写多个col元素。

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

(也可以不写<colgroup class="x" span="3" />对于一些愚蠢的原因)

列组跨越了三列,并根据CSS规则.x {...}风格。这相当于

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

在另一方面,col代表one or more columns in the column group,其spanspecifies the number of columns "spanned" by the COL element ......这是一个循环的定义,如果你问我。

我可以解释这个问题的唯一办法是通过写

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

你说有三列,每一个在同一个逻辑分组,根据.y {...}风格相同的方式。这是一个快捷方式编写

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

Presentationally,我不知道会有一个明显的区别。当然,这一切看起来取决于你的CSS。但在语义上,它们是非常不同的。第一个示例代表三组列,每组包含一列,而第二个示例代表一组三列。

重新考虑这个之后,我决定他们都是一样的。拥有colgroup范围n列数与具有一个colgroupcol子列的列数相同,列表范围跨越n列。我认为没有逻辑或语义上的差异。

注意:the col element must be contained in a colgroup element that has no span attribute. It may not be a direct child of the table element

+0

感谢您的回答。除了语义学的观点之外,我还没有将任何现实世界的例子用作“非官方”的html列选择器。但是,这也取决于数据本身。例如,您可以将地址列分为街道,区域,邮政编码等分栏,其中数据彼此具有自然链接,您可以在此处使用分栏进行分组。但是因为它是网页设计而不是RDBMS,所以它毫无用处! – Jawad 2012-01-20 19:19:48

+0

我明白你的不满。截至目前(2012年1月; Google Chrome v 16),除了更改背景颜色外,我无法在'colgroup'和'col'元素上对CSS进行任何操作。我尝试调整'width','color','font-size'和许多其他属性,但都无济于事。只有“背景色”起作用。我还没有在不同的浏览器上尝试过。任何关注此事的人,如果有的话请回复更多新闻。 – chharvey 2012-01-22 18:27:12

+0

如果提供了课程,则可以应用该课程 - http://reference.sitepoint.com/html/colgroup – Jawad 2012-01-24 11:40:07