在我的其他問題cell spacing in div table大家都說表格更好,然後div表和一個提到沒有好處div表超過html表。我很困惑,爲什麼display: table
介紹,如果它的可怕是什麼點?爲什麼`display:table`存在?
回答
不管它是否是更好地使用表或div的在任何情況下任何其他考慮,原因display:table
存在(以及相關的display:table-row
和display:table-cell
)是因爲CSS應該是能夠呈現任意HTML(或甚至XML)轉換爲所需的佈局,而無需將任何樣式化效果硬編碼到瀏覽器中。
標準<table>
,<tr>
,<td>
等元素具有大量應用的默認樣式;並以多種方式表現與其他元素的完全不同。 display:table
複製那些不同的行爲。因此
現代瀏覽器可以簡單地使用display:table
作爲默認樣式table
元素,而不是有內置的發動機硬編碼表特定的渲染,這一點與舊版本瀏覽器的情況。
A 顯示錶表現出關於細胞間距和拉伸的特定方式。這種行爲很難用其他手段重現。 HTML <table>
元素只應用於表格數據儘管(請考慮Excel電子表格)。所以一個是顯示行爲,另一個是語義(有意義的)標記。你可能想要使用另一個,這就是爲什麼它們是兩個不同的東西。
如果您有表格數據,請使用<table>
將其標記出來,並免費獲取表格顯示行爲。如果你有一些真正不是表格數據的東西,但是你想用表格的行爲來顯示它,那麼在它上面打一個CSS表格顯示行爲。
選擇是否使用這個或另一個基於更多的是使用數據表而不是佈局。一個很好的經驗法則是當你真的試圖使用一個「表」數據時使用一個表。
的底線是,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>
進行佈局將同樣錯誤。
- 1. 爲什麼doctype更改'display:table-cell''行爲
- 2. 爲什麼「display:table-cell」在「position:absolute」時被破壞
- 3. 爲什麼width:100%不能在div {display:table-cell}上工作?
- 4. 奇怪{display:table}行爲
- 5. 如何/爲什麼display:table影響div寬度?
- 6. 將列寬保持爲「display:table」
- 7. display:table-cell;
- 8. Mono爲什麼存在?
- 9. 爲什麼Console.Out.WriteLine存在?
- 10. 爲什麼存在java.util.Scanner?
- 11. 爲什麼Microsoft.Office.Interop.Outlook.Excecption存在?
- 12. 爲什麼respondsToSelector:存在?
- 13. 爲什麼java.net.SocketInputStream不存在?
- 14. 不存在爲什麼?
- 15. Java:爲什麼MaxPermSize存在?
- 16. 這是爲什麼存在?
- 17. silverlight爲什麼存在?
- 18. 爲什麼window.addEventListener存在?
- 19. 爲什麼eval()存在?
- 20. 爲什麼ID存在?
- 21. 爲什麼存在Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals()?
- 22. 爲什麼DBNull.Value存在
- 23. 爲什麼ActivePython存在?
- 24. 爲什麼`ScalaObject`存在?
- 25. 爲什麼Convert.ToInt32(DateTime)存在?
- 26. 爲什麼`DatabaseGeneratedOption.None`存在?
- 27. 爲什麼{[「abc」]:123}存在?
- 28. 爲什麼存在與RequestOptions
- 29. 這個組合:before,:after和display:table做什麼?
- 30. 在Chrome/IE Edge中使用`display:table`和`display:table-cell`到<fieldset>
我會假設,它允許開發人員實現了傳統表格佈局行爲,而錯誤地使用元素與語義。換句話說,使用'table'進行佈局在語義上是錯誤的;它可以說是不對*表格數據使用表格。 'display:table'可以讓你在沒有(不正確)語義的情況下實現佈局。 – 2013-03-01 23:04:54