使用div构建我的网站有什么好处并应用display:table属性(display:tr,display:tr)。这是不是意味着div的行为与tr和td元素完全相同?
我知道我可能根本不应该使用表格或表格行为进行布局,但我只是好奇是否存在差异和好处?
答案 0 :(得分:13)
使用div构建我的网站有什么好处并应用display:table属性(display:tr,display:tr)。
我认为没有,除了你take away compatibility with older browsers。使用display: table-*
的DIV比<table>
更好的想法是愚蠢的IMO,以及对表格元素的完全错误的歇斯底里的结果。 (不要攻击你@Nimo,只是批评一些把“桌子都是邪恶的”模因过多的人。)
表应该用于表示表格数据,而不是被滥用于布局。
然而,有一些表格使用纯CSS仍然很难模拟。你要么需要大量的黑客攻击,有时甚至需要基于JavaScript的解决方法才能使这些工作成功。
您应该以不依赖于这些能力的方式设计布局。
在极少数情况下,你做需要它们。但是,无论你使用正确的<table><tr>
还是脑死亡<div style="display: table"><div style="display: table-row">
(哪一个更具语义性和更好的可读性?)
如果您需要 display: table-*
进行布局,那么您手边就会遇到其中一种罕见的情况,或者您已将自己画在角落里。无论哪种方式,使用<table>
,您至少可以获得一致的浏览器支持。
答案 1 :(得分:8)
以下解释了为什么要在TABLE元素上使用DIV。
表元素的优点:大多数设计师使用表格来保持一致。表格也易于维护。表的另一个优点是它与大多数浏览器兼容。
表元素的缺点:所有这些都带来了成本:太多的嵌套表会增加页面大小和下载时间。更多表格元素会降低重要内容,因此搜索蜘蛛不太可能向搜索引擎添加内容。
DIV元素的优点: div与CSS我们可以实现相同的基于表的页面结构,减少页面上的元素数量,从而加快页面的加载速度。它还使页面与搜索引擎蜘蛛更加兼容。
DIV元素的缺点:这主要的缺点是并非所有CSS元素都不兼容浏览器。因此,我们必须编写一些自定义CSS来解决问题。
完整文章:http://www.codeproject.com/KB/HTML/DIVwebsite.aspx
display:table 告诉元素显示为表格。嵌套元素应该显示为表格行和表格单元格,模仿好的旧TR和TD。还有一个 display:table-column 但它根本不显示任何内容,只为COL提供样式信息。我不确定这是如何运作的。
有关div显示样式的更多信息:http://www.quirksmode.org/css/display.html
答案 2 :(得分:6)
显示:表;并不意味着你将div转换为表格,它只是使某些属性(如vertical-align)在通常不会的地方工作。这与使用表格进行布局并不相同。
答案 3 :(得分:0)
表只应用于表示表格数据。 Div是用于分组内容的容器。就那么简单。 display: table
仅为您提供表格的布局属性。但它与&lt; IE7不兼容,所以为了优雅降级,请避免使用它。