本文所分享的知识点是【页面重构技能-Javascript、CSS篇】,欢迎您喜欢我爱IT技术网所分享的教程、知识、经验或攻略,下面是详细的讲解。
页面重构技能-Javascript、CSS篇
About JS、CSS
CSS:
- 样式表置于顶部
- 避免CSS表达式
- 使用外部JS、CSS
- 削减JS、CSS
- <link> ,@import
- 避免滤镜
JS:
- 脚本置于底部
- 使用外部JS、CSS
- 削减JS、CSS
- 不用重复脚本
- 减少访问和操作DOM
- 事件委托
1、样式表置顶,Why?
浏览器渲染页面都是自上而下的渲染,当在<body>里遇到<link>或是<style>时候会阻塞渲染页面,而且也有可能会造成页面重绘,就好像格子铺里,东西都按顺序摆好了,但是老板说,这个东西得这样、那样摆,又得挨个重新摆了。除此之外,加在<head>里是为了可以顺序加载所需的样式。
2、避免CSS表达式,Why?
很多人包括我在内,当学习到CSS表达式时候,都说避免或不要用它,所以都偷懒的不用看了,包括JS里的eval一样……
后来有一次项目我就偏偏用了一次,结果。。。它成为了最后查出来的BUG。。。(IE6下影响了页面样式)
其实CSS表达式最主要的弊端是它影响性能,要知道CSS是具有时效性的,也就是说,当你修改一下样式,它会马上生效,
而改变窗口大小,滚动页面甚至移动鼠标都会触发表达式进行频繁的求值,会严重影响,所以要尽量避免。
3、使用外部JS、CSS,Why?
我们都知道使用外部文件会增加HTTP请求,但是由于缓存的关系,当用户再次访问时,或者访问其它页面里相同的文件时候,页面会明显提升响应速度,而且,还有一点好处就是外部JSS、CSS可以减少页面内的文档大小。
4、削减JS、CSS,Why?
这个不用说了……你说为什么?
5、用<link>,@import,Why?
先来看看两者区别:
区别1:老祖宗的差别。@import完全是CSS提供的一种方式,link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。
区别2:加载顺序的差别。link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
区别3:兼容性的差别。link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。
区别4:使用dom控制样式时的差别。link支持使用Javascript控制DOM去改变样式;而@import不支持。
两者比较,@import明显弱爆了……
6、避免使用滤镜,Why?
IE独有属性AlphaImageLoader用于修正7.0以下版本中显示PNG图片的半透明效果。这个滤镜的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。在每一个元素(不仅仅是图片)它都会运算一次,增加了内存开支,因此它的问题是多方面的。
完全避免使用AlphaImageLoader的最好方法就是使用PNG8格式来代替,这种格式能在IE中很好地工作。如果你确实需要使用AlphaImageLoader,请使用下划线_filter又使之对IE7以上版本的用户无效。
7、脚本置于底部,Why?
脚本的问题就是当浏览器渲染时候遇到<script>,就会跑去下载,然后执行里面的JS,这期间页面就会阻塞,等待完事了再继续向下执行。所以,为了先将页面最快的呈现给用户,JS应放在</body>的上面。
8、减少访问、操作DOM,Why?
访问:在《高性能JavaScript》中这么比喻:“把DOM看成一个岛屿,把JS看成另一个岛屿,两者之间以一座收费桥连接”。
操作:修改和访问DOM元素会造成页面的Repaint和Reflow,也就是重绘和回流。
所以问题显而易见。
解决方案:缓存已经访问过的有关元素
更新完节点之后再将它们一次性添加到文档树中
9、事件委托,Why?
事件委托,也就是利用事件冒泡的机制,把事件绑定到元素对象的父元素上。
例如:一个多行的表格,含有经过提示行效果,并且表格会随着分页经行变化。
分析:鉴于上面的第7条,我们不能牺牲性能去为每个变化的行元素绑定事件。
解决方案:把事件绑定到table的父元素上,根据e.target(e.secElement)的节点类型判断来进行操作
关于页面重构技能-Javascript、CSS篇的相关讨论如下:
相关问题:div+css+javascript
答:DIV+CSS是WEB设计标准,它是一种网页的布局方法。与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离。提起DIV+CSS组合,还要从XHTML说起。XHTML是一种在HTML(标准通用标记语言的子集)基础上优化和改进的新语... >>详细
相关问题:我想问一下做网页设计师必须得会javascript么?我...
答:前端的话 你可以这样搭配 只FLASH 或者 CSS+JS 这样方便找工作 只FLASH 基本作为FLASH动画,动效师来找工作,配上一定绘画能力 CSS+JS 是前端制作必备的基本条件,尤其是HTML5的进一步发展。 推荐你学习CSS+JS 目前看来趋势比FLASH较好! 做这行... >>详细
相关问题:51job怎么填简历啊?我学的是DIV+CSS,javascript...
答:简历还是把你自己的信息填上去了,一看你就是学生想出来实习工作了! 其实你只要把你的真实信息,学习的专业都如实的描述,以及自己的一些项目经验都描述一下就可以了! 别人的东西永远都是别人的!出来工作就要学会独立! 51job网站很简单,你... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
