今天看到神采飞扬发表于前端观察的《DIV+CSS 请不要再忽悠人了》,讲的挺有深意的,尤其对于新手如何正确认识div,学习web标准,使用web标准建站应该有很大帮助。转载过来,共同分享。

在大约两年前,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……

个人看法:本人对此文件非常认可,作者对现在这种让别人认为非常有追求感东西,其实就是夸大DIV+CSS的作用,而忽视了对其它标签的应该,DIV+CSS并不是一种完美组合,所以说,DIV+CSS要换一种说法了,(X)HTML+CSS不更合适吗?

最新文章

  1. 记一次Redis被攻击的事件
  2. android 帧动画,补间动画,属性动画的简单总结
  3. PHP跳转页面的几种实现方法详解
  4. Servlet与JSP的区别
  5. Dev GridControl数据导出格式问题
  6. 在Debian下安装LAMP
  7. jquery 简单弹出层
  8. 孟岩的c++ 的学习方法,这何尝有不是做人做事的方法呢?
  9. Java HashMap 如何正确遍历并删除元素
  10. USB设备架构
  11. 分享一本书&lt;&lt;谁都不敢欺负你&gt;&gt;
  12. python3之模块
  13. 我的webstorm 使用总结
  14. Hive与Hbase整合
  15. 比较 Spring AOP 与 AspectJ
  16. java static learning
  17. Django之web应用、http协议和django简介
  18. Android 调用系统相机拍照并获取原图
  19. Linux安装maven以及配置-Centos7版本
  20. 创业公司做数据分析(四)ELK日志系统 (转)

热门文章

  1. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
  2. 转:HTTP协议--- multipart/form-data请求分析
  3. Hibernate二次学习一----------搭建Hibernate
  4. 局域网简单的SVN服务器的搭建
  5. Project Euler:Problem 87 Prime power triples
  6. 生成JNI的DLL时提示找不到jni.h的解决的方法Cannot open include file: &amp;#39;jni.h&amp;#39;: No such file or directory
  7. Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项
  8. 大数据学习系列(5)-- 局域网yum仓库搭建
  9. date_default_timezone_get():
  10. Apache Shiro 使用手册(二)Shiro 认证(转发:http://kdboy.iteye.com/blog/1154652)