我们最新出版的一本有争议的书名 ,比起谷仓舞中的一桶青蛙引起了更多的辩论和更多的下意识的反应。 我经常看到的一句话是“用显示为表格的div
替换table
标签没有什么不同; 您也可以只使用表格。” 该参数很有趣,因为它听起来像注释者暗示不使用table
标签的唯一原因是所涉及的标签数量。
即使您只是将所有table
, tr
和td
标签替换为显示为那些表元素的div
标签,我也会div
说一遍,这比使用HTML表进行布局要好。
没有人受到过度使用结构性div
标签的负面影响。 使用HTML表进行布局不能说相同。
使用嵌套表进行布局的网页将难以打印,难以在移动设备上查看,并且对于屏幕阅读器的用户来说也难以导航。 屏幕阅读器应用程序经常会偶然发现嵌套的HTML表,在输入表内容时会显示“具有5行2列的表”,而在离开时会显示“表尾”。 可以将使用嵌套div
元素的同一网页设置为整齐的样式,以便在移动设备上进行打印和查看,而屏幕阅读器将忽略div
元素。
通过使用HTML表,您暗示着每个单元格的内容在二维中与其他单元格的内容相关:在同一行和同一列中。 另一方面, div
表示与其他div
元素没有这种关系。 这只是内容的脚手架,其使用没有任何意义。
好的,用div
元素盲目替换所有与表相关的标签可能不是解决此问题的正确方法,但是说这与使用HTML表进行布局“一样糟糕”是错误的。 HTML 4.01将div
定义为“通用语言/样式容器”,或更具体地说:
DIV
和SPAN
元素与id
和class
属性一起提供了一种向文档添加结构的通用机制。 这些元素将内容定义为内联(SPAN
)或块级(DIV
),但不对内容强加其他表示形式。 因此,作者可以将这些元素与样式表,lang
属性等结合使用,以使HTML适应他们自己的需求和品味。
因此,我们可以使用div
元素定义内容块; 听起来像使用嵌套的div
元素来结构化内容是完全有效的。 只要您不使用div
元素代替更合适的元素(例如标题,段落,块引用,列表,当然还有用于表格数据的表格),那么您就可以做得很好。
使用HTML表格元素创建布局时,您采用的方法是先对HTML中的布局进行锁定,然后再设置网页样式。 这是错误的,并且面对既定的最佳实践也行不通:将演示文稿与内容分开。
即使使用很多div
元素,这也与CSS布局方法完全不同。 例如,我可以将代表网站品牌的所有内容包装在div
标签中,并将代表其他网站信息的所有内容包装在另一个div
标签中。 在CSS中,我可能会采用一种样式,将网站品牌放在网页顶部,将其他网站信息放在底部,这一事实现在还不重要。 在布局阶段,我可以这样做,或者可以使用与CSS表相关的显示值将它们分成列或行。 可以用多种方式设置标记样式,因为该方法不会锁定HTML标记中的布局。
From: https://www.sitepoint.com/is-using-lots-of-div-tags-really-that-bad/