案例1

面试者:你好,我来面试公司的xhtml/css工程师职位。

考官:恩。你对CSS的了解程度怎么样,精不精通xhmtl/css

面试者:不敢说精通,只能说是很熟悉。

考官:对不起,我们公司只招那些精通xhtml/css且有一定经验的人员。

面试者:…………

案例2

提问者:我想把一些员工数据,比如姓名、员工编号、部门、入职时间、工资这些显示出来,怎么用div+css来写比较好呢?

回答者:用表格吧。直接用dreamwer来插入表格,把相应的数据写进去后再去写一些css来美化界面。快捷又方便。

提问者:(过了N)我是问怎么用div+css来写比较好,还有用表格的直接无视。因为现在大家都用div+css了。

回答者:………

案例3

求助者:Hi,朋友,能不能帮我看一下这个网站的样式到底哪里有问题,怎么在IE6里没有问题,跑到Firefox里面就乱了。我自己都找好久都没看到哪里有错。

解救者:嗯,我看一下你的代码先。

求助者:好的。

解救者:你能不能把代码风格整理下再发过来。各个区块整理出来。

求助者:不用了吧。反下浏览器效果都出来了。现在只是个别浏览器出错。代码应该没有什么大问题,最多就是兼容问题罢了。

解救者:………你让我怎么看代码。

案例4

求助者:为什么我设置了块元素背景后,在Firefox里面看不到背景色了呢?

解救者:加上dtd看一下。

求助者:可我加了,因为是用Dreamwer里面生成的,默认就是xhtml的。

解救者:会不是设置了白色。和浏览器的默认颜色一样呢?

求助者:不是。我设的是#646136;

解救者:我看一你的代码(过了N久后……)原来你在父类那里设置了浮动导致的。

经常看到些招聘都要求精通CSS,如果回答如案例1那样,很有可能会得到相应的回答。然而也会有一大群人信心十足地回复“精通CSS”“手写代码”“通过W3C验证”“兼容IE5IE6IE7IE8,FirefoxOperaSafari……”,姑且对你对自身认识的准确度不谈,你所罗列的这一大堆东西你真的觉得是有意义的吗?难道CSS的最高境界就是熟知各浏览器的对HTML/XHTMLCSS解析的差异性,然后熟记一大堆hack技巧?表现上差异性,hack技巧可以说都是可以量化的,是可以通过付出时间成本来获取的(按照我个人的想法就是Hack写法,能避免就避免)。你用了两年的实际工作时间,通过你的辛勤实践总结掌握了很多不同浏览器表现上的差异性,也通过各种手段解决了这些差异性,做到了完美的兼容,你觉得你很有经验,你精通了CSS,你很牛叉了。可是事实上,你引以为傲的这些东西,一个勤奋的学生可能通过书籍、搜索引擎坚持两三个月就搞定了。然后某天,浏览器市场在经过多年的厮杀和开发者的口诛笔伐后实现了天下一统,你所有的付出、你所有的经验、你所有的精通就会在一夜之间迅速贬值!这一天是完全可以预见的!

但并不是说研究浏览器对HTML/XHTMLCSS解析的差异性毫无意义,熟知这些东西对提高工作效率还是相当有帮助的。只是它的意义远没有到要把它当着神一样膜拜的地步,也绝对不应该成为你学习CSS的终极目标。

知识技术的研究要么是基础研究要么是应用研究的。显然,对于大多数开发人员而言都属于应用层面的研究,所要做的就是如何灵活运用已有的技术成果高效率的去完成工作。而具体到web前端开发,具体到页面制作人员,重心就应该是在如何去构建简洁、强壮、易扩充和高效的代码上面!而不是成天在无数个浏览器之间来回切换地去寻找表现差异性的规律,它们在很多时候就是没有规律的,还有很多时候是你庸人自扰,本来可以很简单的页面结构你却写的更复杂,兼容性问题自然就会更多,这就是自己给自己制造麻烦(案例2就是一个很明显例子)。浏览器自身的缺陷留给他们自己去解决,你的没日没夜的辛勤劳动在那帮开发浏览器的家伙眼里也就是自作多情罢了。简洁、强壮、易扩充和高效的代码不但能提高页面效率的,为JS编程提供良好的接口,同时能够大大的提高开发效率和质量。但是这个却是很难从书上看来的,只能在实践中不断的总结积累,属于经验问题。在我刚接触CSS的时候,看了很多到底是该用id还是class的文章(相信很多人都看过~囧~),现在想来价值甚少,到底是用id还是class绝不单单是id只能唯一而class可以重复多次使用的问题,你还得为JS编程提供了好接口作更多考虑~···大型项目样式文件结构的安排,命名规则,页面结构往往也并不如想像中那样随意和简单,很可能一个刚进公司的新人按照自己的命名习惯来写样式,但结果导致了整个项目的周期增长、后期开发难度增大等问题。

经验问题,仁者见仁,智者见智。不要一味的追求“精通css”,应该更多的关注标签语义化、可用性(Usability)、可访问性(Accessibility)和可维护性(Maintainability