写这篇文章的起因在于其中一个群里的讨论,有一个人说公司要求所有页面不能出现table,他正在努力地用div在做表格,我当时表示非常惊讶,DIV已经被妖魔化成什么样子了。

    我在amazon.cn搜索div + css有不下20本书的书名是学习div +css,也许就是因为这些无知作者的存在,div才会被妖魔化,如果我们一定要给这种布局方法定义一个名字的话,也许html + css是最合适的。而table为什么不能被用来布局,div为什么不能用来做表格的根本在于html的语义化,而html的版本不断升级也在不断推进语义化,html5里出现的新标签也说明这一点,如nav,footer,header等等。


   一、div和table
   table为什么会被用来布局,这个无从得知,也许是他简单,易用,特别是在DW中,直接一拖整个网站的框架出来了,然后再不停地往里填东西,到最后,大家终于发现这样不好,用table布局,一个套一个,代码多,意义不清,结构不明,不利于程序嵌套等等,然后div出现了,大家开始疯狂涌向div,如果你跟人说,我用table写页面,直接就被鄙视了,象文章开头说的事情,应该在早期经常出现吧。而div的出现,我觉得其实带有一定的偶然性,division这个单词其实是没有任何意义的,它只是错误的标签出现在一个错误的时间,所以我们在用div布局的时候,要用css去弥补它的无语义,比如基本在所有网站都会看到的<div id="header"></div><div id="nav"></div><div id="footer"></div>,而随着html5的普及,这样的布局方式也会慢慢消失。

    二、语义化是html的根本
    检验html语义化的最好标准是看一下你的页面在没有css下是什么样子的,html的语义化就是让正确的标签做正确的事,如<h1>....<h6>是标题,<ul><ol>是列表,p是段落,<blockquote>是引用,他们本身有自己的属性和表现形式,没有css,我们仍然知道他们表示的是什么的,如果这些都变成div呢?你会看到一堆无意义的div的堆砌.table的语义在于表格,而不在于布局,它在显示数据方面具有其不可替代性,所以table不但不会消失,而且会一直存在,只是回归它原来的功能。

   三、防止过度的div化
   现阶段,div仍然是布局的首选,但我们也要认识到它的局限性,所以在布局的时候,要防止过度使用div,如果是一堆div的不断嵌套,那跟用table布局有什么区别呢

   div布局的出现,其实已经有好几个年头,只是这样的问题可能还是大量存在,特别是对于刚入行的前端同行,而且对于这个问题,网上其实也有不少前辈发表过观点,大家可以google之。

标签: none

添加新评论