web开发,除了后台开发和数据开发,很大一块是前端开发。前端开发中使用最大的技
术是:html(现在也有项目开始使用html5了,比如沪江英语的听力曲线使用html5
canvas绘制的),css(这个也有一个新版本,css3.0。很多应用出现圆角效果,估计都使用到了3.0的新特性),javascript(其实
这个也有版本的哦!盛大的权一大师就在研究ecmascript5了),一个javascript框架,比如说jquery,dojo,yui等等。
主要讲解css性能调优,内容涉及一下几个方面。
1.style标签的调优
2.特殊css样式的使用
3.css的缩写
4.css的声明(省略)
5.css的选择器
第一点:
把
stylesheets文件放在html页面的头部,把javascript文件放在页面的底部。这也是《高性能网站开发》中的建议方法。对于
@import 和 <link> 两种加载外部 css 文件的方式:@import 就相当于是把 <link>
标签放在页面的底部,所以从优化性能的角度看,应该尽量避免使用 @import 命令。
第二点:
避免是有某一特定浏览器的技术的。比如ie支持的css expression和alphaimageloader filter。
第三点:
css的缩写。原来把
#ffffff写成#fff也是可以减小代码量,提高性能的呀!在项目中pm经常会指导我们,把font-style: italic;
font-variant: small-caps; font-weight: bold; font-size: 1em;
line-height: 140%; font-family: sans-serif; 写成一行,font: italic small-caps
bold 1em 140%
sans-serief。不过这个对于熟练的工程师来说还好,但是对于初学者来说,这样的样式不够清晰易懂。因为我没有分析过浏览器解析和渲染样式的原
理,写成一句是否真的有利于各个浏览器提供性能。我还是不敢肯定。
第四点:
css选择器。周祥老师给出了这个例子,让我大吃一惊。
示例一:child selector
#toc
> li {font-weight: bold} ,他说:浏览器是“从右往左”来分析 class
的,它的匹配规则是从右向左来进行匹配的。这里,浏览器首先会查找页面上所有的“li”节点,然后再去做进一步的判断:如果它的父节点的 id
为“toc”,则匹配成功。ps:不过我们项目基本不用这个样式,因为ie6不支持子代选择器。不过他在后面列举
示例二:descendant selector
li {font-weight: bold} ,这个效率比之前的“child
selector”效率更慢,而且要慢很多。浏览器先便利所有的“li”节点,然后步步上溯其父节点,直到 dom
结构的根节点(document),如果有某个节点的 id
为“toc”,则匹配成功,否则继续查找下一个“li”节点。不是吧!这个样式在我们开发的web项目中用到的特别多呀!不过我们现在也逐步习惯一级一级
的定位元素,减少浏览器在dom结果查找的节点的时间。
如果一个标签有id,直接使用id seletor,比如 <div
id="footer"></div>,不要写
div#footer,查找效率很低。但是关于class选择器,我倒是觉得可以使用tag和class同时定位,有时需要这样的需要。
treehead treerow treecell {...} ----->> treehead > treerow > treecell {...}
descendant 选择器是耗时相对高的选择器,通常来讲,它在 css 里的使用应该是尽量避免的,如果能用 child 选择器替代就应该尽量这样去做。还是那个原因,ie6不支持,所以不使用这个。
同时推荐2本淘宝工程师翻译的书,确实不错。目前看完第一本,正在看第二本。作者是前google web工程师,翻译都是由口碑前端团队完成的。

ps:就因为我在这里放置了2个卓越链接,居然移出首页。