2013-03-01 129 views
2

在我的其他問題cell spacing in div table大家都說表格更好,然後div表和一個提到沒有好處div表超過html表。我很困惑,爲什麼display: table介紹,如果它的可怕是什麼點?爲什麼`display:table`存在?

+1

我會假設,它允許開發人員實現了傳統表格佈局行爲,而錯誤地使用元素與語義。換句話說,使用'table'進行佈局在語義上是錯誤的;它可以說是不對*表格數據使用表格。 'display:table'可以讓你在沒有(不正確)語義的情況下實現佈局。 – 2013-03-01 23:04:54

回答

3

不管它是否是更好地使用表或div的在任何情況下任何其他考慮,原因display:table存在(以及相關的display:table-rowdisplay:table-cell)是因爲CSS應該是能夠呈現任意HTML(或甚至XML)轉換爲所需的佈局,而無需將任何樣式化效果硬編碼到瀏覽器中。

標準<table>,<tr>,<td>等元素具有大量應用的默認樣式;並以多種方式表現與其他元素的完全不同。 display:table複製那些不同的行爲。因此

現代瀏覽器可以簡單地使用display:table作爲默認樣式table元素,而不是有內置的發動機硬編碼表特定的渲染,這一點與舊版本瀏覽器的情況。

5

A 顯示錶表現出關於細胞間距和拉伸的特定方式。這種行爲很難用其他手段重現。 HTML <table>元素只應用於表格數據儘管(請考慮Excel電子表格)。所以一個是顯示行爲,另一個是語義(有意義的)標記。你可能想要使用另一個,這就是爲什麼它們是兩個不同的東西。

如果您有表格數據,請使用<table>將其標記出來,並免費獲取表格顯示行爲。如果你有一些真正不是表格數據的東西,但是你想用表格的行爲來顯示它,那麼在它上面打一個CSS表格顯示行爲。

0

選擇是否使用這個或另一個基於更多的是使用數據表而不是佈局。一個很好的經驗法則是當你真的試圖使用一個「表」數據時使用一個表。

0

的底線是,HTML標記(<table>)應說明內容,而CSS(display:table)介紹了這些內容應該樣子。他們不一樣。

您可以在非表格元素上使用它,但當您要設置實際表格的顯示屬性時,display:table是唯一正確的選擇。

下面是一個容易理解的例子:

<div class="my-tables"> 
    <table>...</table> 
    <table>...</table> 
    <table>...</table> 
</div> 
.my-tables table { 
    display:none; /* hide all the tables */ 
} 

你怎麼顯示錶一個,說的第一個?

.my-tables table:first-child { 
    /* display:block; not quite... */ 
    display:table; /* There it is! */ 
} 

表格是標記表格內容的正確工具。表格只是的佈局是否是標籤的誤用。使用<p><fieldset>進行佈局將同樣錯誤。