DIV+CSS 请不要再忽悠人了

在大约两年前,DIV+CSS是一对很诱人的组合,会用DIV+CSS制作网页的人,常常会被人赞以大拇指的,记得06年初的时候,我用div+css布局的一个纯静态网站还拿了学校网页设计比赛的一个奖。

今天,尽管提到DIV+CSS,还会有很多人热情高涨,但是我会对他摇头了:DIV+CSS不是一切,更不是某些人所谓的“神话”!创造神话的是CSS,不是DIV+CSS。我想,是时候纠正这个问题了。

CSS的要义,是各个标签要各尽所用。

盲目推崇DIV+CSS只会让小白误入歧途的。

1、DIV只是HTML最常用的标签之一

显然HTML并不只是一个DIV标签有用,每个标签都有它的用途,只是DIV是其中最有用的一个罢了。如果DIV可以实现所有其它标签的功能,那么W3C早就把HTML精简了!

Table也不是一无是处,只是用table比较简单、容易上手才在早期被人错误的广泛推广。但是table在处理网页数据的表现上,是其他标签无法替代的,只是,它不适合用来做整个页面的布局。

2、代码的可读性

纯DIV+CSS的网站的代码的可读性无疑是非常差的,甚至table还可以通过tr和td来区分行和列,一堆DIV堆砌在一起,如果没有注释,你根本不知道某个部分是做什么用的。

3、语义化与结构化

现在,在开发CSS的时候,提的越来越多的是语义化,语义化归根到底其实还是代码的可读性问题。语义化就是让代码更易读,更加易懂,比如,.text_01{color:red} 就没有.text_red{color:red} 容易理解。

HTML同样如此,比如我们看到<ol>就知道这是个有序列表;看到<p>标签就知道这是一个段落,内容为文字;看到<span>就知道这个是比<p>还小的文字单位;看到<h1>、<h2>之类的就知道他们是标题。

显然,全部是div的页面,是看不出来这些的。

页面的结构化亦是如此,比如<div><div><div><div>…..</div></div></div></div>这样的代码,显然是很难理解其DOM结构的,但是<div><p><h2><span>…..</span></h2></p></div>就比上面的那个结构要清晰很多。

相信做开发的人对代码的语义化和结构化的理解会更加深刻。

4、团队合作

可读性低、结构化和语义化差,团队的其他成员的学习和维护难度就会提高,这对于一个团队来说,是很浪费时间和精力的。

其实,DIV+CSS的说法,已经把我们从table带到了另外的一个极端,正确的网页设计不是一个标签雄霸天下,而是每个元素都使用合适的标签。

所以说,DIV+CSS要换一种说法了,(X)HTML+CSS不更合适吗?

请不要再特意提DIV了。小白们真的会把它当作宝贝的!

其实回头看看国内普及标准化的过程,已然走错路了,就在国外同行研究CSS Sprites和网格(Grid)等技术时,我们在做什么?就在国外CSS框架遍地开花的时候,我们在做什么?到现在我们还是只能去国外的东西,依然跟在别人后面。

两年了,我们依然纠缠于DIV+CSS……

PS:我在半年前写过一篇同名博文,但是当时也不过随意唠叨两句,没想到这几天竟又见到很多歌颂DIV+CSS的文章,让我觉得,有必要说些什么……

如果你喜欢本文,欢迎 订阅本站 以获得本站最新内容。

您或许也会喜欢:

54 个评论

  • 我觉得作者没有必要这么生气,大家说DIV+CSS其实就是你说的XHTML+CSS,谁也没有说DIV+CSS就是全部DIV。

    另外,我还没有见过那个使用CSS的人、网站会放弃等语义化标签而全部使用div,说白了,这篇文章是你自己命题,自己推翻,你所谓的CSS小白,可否找一两个这样写代码的网站出来?

    • 其实呢,我的意思和大部分人的观点是一样的,我这里主要想批判的也不过是DIV+CSS这种叫法以及少数的纯DIV编码。

      只是没想到大家的反应这么激烈….呵呵

      不过我很高兴,这么多高手来指点迷津,我想,对于一个新手来说,这些评论比我的博文更有价值……

  • 哦,没想到你的留言区支持html,呵,上面留言的代码全部被修正转化了,加粗显示的前面《strong》《p》《span》……

  • 不怪你,要怪就怪那个帮你投递到cnbeta的家伙……
    当然,如果那个家伙就是你,额……
    我纯路过

  • 晕死,首先你在称呼上就有错误,啥DIV+CSS,你去google搜一下看,是不是搜出的全都是中文站?因为他原名根本就不叫DIV+CSS,而是叫XHTML,好好去理解一下内容与表现分离,XHTML并不是就是DIV,它还有一系列的标签,你只用来定义,当然啥都看不懂,说实话,在没有搞清楚一样学科之前,妄加评论是一种很不理智的行为,会让人贻笑大方的。

    • “贻笑大方”就是让人笑话的意思
      “让人贻笑大方”就贻笑大方了

      • 茴字有二十八种写法,你知道吗

        • 过客说的是汉语常识,而不是老学究的空理论,你反应过激了。鲁迅当初还要灭掉汉语呢,你知道么

  • 看到就知道这个是比还小的文字单位;

    感觉作者对span的解释不太合理
    span标签跟div一样并无实际的意义
    只是span是inline 而div是block而已

  • 我觉得.text_red{color:red} 这个命名不是很好,灵活性不高。假如设计变了,渲染这个字体的颜色换成蓝色,而你N多个地方有用到这个类的时候,该怎么办?.text_red{color:red} 改成.text_red{color:blue}?我觉得.text_red{color:red} 可以改为.text-normal{color:red}会好些。.text-normal{color:red} ->.text-normal{color:blue} 不改变类名,只改变属性。:-D

    • 你说的很有道理,我在写这篇文章的时候,没有考虑到这些,只是拿它和.text_1这类命名方式相比,没想到这种方式也是不合适的……

  • 看一下w3c主站的源代码就知道是什么意思了。。
    尽量渐少嵌套,合理使用标签。

  • div+css 的存在 并不是没有道理的
    不然也不会 在web界流传起来
    我们先不谈前端的设计 我们谈ajax组件设计 使用div +合成组合模式 就能够很容易的创建出 任何高复用的组件 这个时候 我们谈论的并不是某个标记的可读性 而是以组件来评论了 比如panel tabbar……. 或许你设计过ajax组件框架的时候 就知道了 div的好处了

  • 06年在一个小公司和同事合作一起做的一个DI V+CSS的网站,当时只是觉得新鲜。
    07年还没有人要求用DIVCSS,08年开始小公司也推崇DIV+CSS,好像是个好的网站制作人员都会这个,就代表能力。。。
    08年,我还是没有用。。。只有朋友要求的时候才会
    09年,到了一个以项目单数量为工资的单位。更不会了。。。

  • 实际上作者说得很好

    但是table在处理网页数据的表现上,是其他标签无法替代的,只是,它不适合用来做整个页面的布局。

    的确可以说是这样。

    但是作者没多大意义的字眼上扣半天,也没有多少人会被div+css的名称误导什么的。你难道见过有哪个疯子会在body里填满div而没有一个别的标签?

    你瞧你这篇文章一写出来,一些用table布局的顽固不化者都不看清楚你在说什么,就拍手叫好。事实上根据你的原文,你是不支持用table布局的。

    顺带说一句,你css中的body * {overflow:hidden;}影响到评论框的这个textarea了,导致没有滚动条,有劳加一句:#comment{overflow:auto;}用全部overflow:hidden的css reset实在有点奇怪。。总的来看,你的网站外观设计应该还是不错的,但是css用得就未必了。。

  • 另外还有很重要的,css可以被浏览器缓存,但一般,浏览器是不会缓存html的,html是即时的。css分离出去的(x)html,和table排版(或者是大多数css都写在html内)的(x)html比较,显然前者体积大大减少,这样一来前者就能够大大提高网页浏览速度。。

  • 窝里斗

  • 其实我同意楼主的想法!我以前在自学网页制作的时候,读的是O’Reilly的《Head first HTML/XHTML &CSS》。之前一直就听别人说Div+Css,以为Div是一种语言呢(现在想想很好笑)……
    而学完了才知道,Div其实不比Span牛X多少,只不过一个是块,一个是内联而已。但是合作起来威力却不小。
    所以,活学活用才是最正确的。每个元素都有它存在的道理,要公平并且深入地对待每一个元素,让它们发挥最大的能量!

  • 我觉得,说的不错,我感觉其实会div+css也没什么可骄傲的,但是总会碰到朋友说,哇你会css,太牛了,自己也就不知不觉的优点得以,今天看到你说的,我深有体会,。。。

  • = = ~~楼主~~这个观点你首先要搞清楚

    为什么说是“DIV+CSS”。针对的是老式的TABLE式排版。D+C的排版方式与TABLE比较起来是一个整体概念型的提高。解决了非常多的TABLE排版的缺陷

    所以“DIV+CSS”说的是一种排版模式,根本就不是一门技术。严格意义上区分,D+C的技术是美工掌握的。

    一个网站的根基也不可能是在DIV+CSS上。

    网站美工不等于网站。

  • 另外,整个计算机业。“代码和设计分离”“不同类别的代码分离”是一个必然的趋势。TABLE排版是和这条中心思路背道而驰的。所以TABLE是一定一定会被淘汰的。