2011-06-11 57 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