当前位置: 网站建设 > 网页设计 > 建站经验 >

CSS 性能调优

时间:2013-03-02 03:41来源:未知 作者:admin 点击:

标签:CSS 性能调优 案例(6)性能(8)清单(1)CSS(655)调优(1)Expression(3)
清单 1. CSS Expression 案例 这个效率比之前的child selector效率更慢,而且要慢良多。浏览器先方便所有的li节点,然后步步上溯其父节点,直到 DOM 构造的根节点(document),如果有某个节点的 id 为toc,则匹配胜利,否则持续查找下一个li节点。 先来看看下
CSS 性能调优》文章地址:http://www.tfxk.com/wangyesheji/jianzhanjingyan/0302331T2013.htm

 

  清单 1. CSS Expression 案例

  这个效率比之前的“child selector”效率更慢,而且要慢良多。浏览器先方便所有的“li”节点,然后步步上溯其父节点,直到 DOM 构造的根节点(document),如果有某个节点的 id 为“toc”,则匹配胜利,否则持续查找下一个“li”节点。

  先来看看下面这个例子:

  IE 特有的 AlphaImageLoader filter 是为了解决 IE6 及以前版本不支持半透明的 PNG 图片而存在的。但是浏览器在下载 filter 里面的图片时会“解冻”浏览器,结束渲染页面。同时 filter 也会增大内存耗费。最不能忍耐的是 filter 样式在每个页面元素(使用到该 filter 样式)渲染时都会被浏览器分析一次,而不是像个别的背景图片渲染模式:使用过该背景图片的所有元素都是被浏览器一次性渲染的。

  清单 7. 尽量避免 universal rules

  清单 10. 尽量减少规则数目

Color  Font  Letter-spacing  Line-height  List-style  Text-align  Text-indent  Text-transform  White-space  Word-spacing   
#bookmark  > .menu-left {list-style-image: ,CSS 必知的7个知识点;url(blah)}   ------------>>>>>>>>   #bookmark  {list-style-image: url(blah)}  

 

  CSS 性能调优

.Class1{position: absolute; left: 20px; top: ,CSS 常用信息速查手册;30px;}  .Class2{position: absolute; left: 20px; top: 30px;}  .Class3{position: absolute; left: 20px; top: 30px;}  .Class4{position: absolute; left: 20px; top: 30px;}  .Class5{position: absolute; left: 20px; top: 30px;}  .Class6{position: absolute; left: 20px; top: 30px;}    -------------------->>>>>>>    .class1 .class2 .class3 .class4 .class5 .class6{   Position: absolute; ,CSS 区分IE版本的三个方法;left: 20px; top: 20px;   }  

 

  Expression 只有 IE 支撑,而且他的执行比大多数人想象的要频繁的多。不仅页面渲染和转变大小 (resize) 时会执行,页面滚动 (scroll) 时也会执行,甚至连鼠标在页面上滑动时都会执行。在 expression 里面加上一个计数器就会晓得,expression 的执行上相称频繁的。鼠标的转动很轻易就会使 expression 的履行次数超过 10000。

  然而,可怜的是,偏偏相反,浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向左来进行匹配的。这里,浏览器首先会查找页面上所有的“li”节点,然后再去做进一步的断定:如果它的父节点的 id 为“toc”,则匹配成功。

 

 

  清单 6. Descendant selector

  CSS 代码的分析与渲染都是由浏览器来完成的,所以,懂得浏览器的 CSS 工作机制对我们的优化有至关主要的作用。这篇文章我们重要从如下几个方面入手来介绍一下 CSS 的性能优化:

 

  清单 5. Child selector

  由此可知,CSS 挑选器的匹配远比我们设想的要慢的多,CSS 的性能问题不容疏忽。

 

  清单 9. 关于 class-categorized 规则

  把 Stylesheets 放在 HTML 页面头部:

--> [网站建设之]CSS 性能调优

简介

  浏览器在所有的 stylesheets 加载完成之后,才会开端渲染全部页面,在此之前,浏览器不会渲染页面里的任何内容,页面会始终浮现空缺。这也是为什么要把 stylesheet 放在头部的起因。如果放在 HTML 页面底部,页面渲染就不仅仅是在等候 stylesheet 的加载,还要期待 html 内容加载实现,这样一来,用户看到页面的时光会更晚。

  清单 2. Colour 缩写

 

 

  程序员们常常会给某个 Class 前面加上标签名称(Tag Name),以更准确且疾速的定位该节点,但是这样往往效率更差。和清单 8 中的原理一样,页面上的 class 在全局范畴内来讲应该是唯一的,用独一的 Class 名称来定位一个节点往往比组合定位更加快捷。事实上,这种做法也可以避免因为开发修正页面元素的类型(Tag)而导致的款式生效的情形,做到样式与元素的分别,两者独破保护。

  CSS 的声明

button#goButton {...};----->>#goButton  .fundation#testIcon {,CSS 入门教程 纵向导航菜单...};----->>#testIcon  

 

  参考下述代码:

 

  Descendant 选择器是耗时绝对高的选择器,通常来讲,它在 CSS 里的使用应该是尽量避免的,如果能用 child 选择器替代就应该尽量这样去做。

 

Tag:性能     性能    

  这篇文章先容了 Web 开发中对于 CSS 性能方面需要注意的一些小细节,从 CSS 自身着手,介绍了编写 CSS 代码中需要避免的一些写法,比方 CSS Expression 的弊病,CSS 缩写以及 CSS 取舍器的注意事项等等,也分享了一些比较推举的做法。我们可以在开发进程中尽量留神一下这些小细节,以尽可能多的提高我们 Web 利用的机能,css sprites适用范围和css sprites的利弊

Span[mailfolder="true"] > table > tr > td.columnClass {...}   ------------------->>>>>>>   .span-mailfolder-tbl-tdCol {...}  

 

  清单 12. 利用 CSS 的继承机制

  停止语

  针对这种情况,最好的解决措施就是使用 PNG8。

treehead treerow treecell {...} ----->> treehead > treerow > treecell {...}  

 

  清单 8. Id-categorized 规则与 tag name 或 class 规则并行

  清单 4. Class 的申明

#000000     ------>>     #000  ,CSS Sprites技术及图片优化;#336699     ------>>     #369 

 

  避免使用 CSS Expressions:

  特殊的 CSS 样式使用方式

  防止应用 Filter:

  CSS 选择器 (CSS Selectors)

  Style 标签的相干调优

  清单 3. 各种缩写方式

  Multiple Declarations

  CSS 缩写:

  在 CSS 中,有很多 CSS 的属性以可以继续的,如果某个节点的父节点已经设定了上述的 CSS 样式(如:color, font 等 ...),并且子节点无需更改该样式,则无需再作相关设定,同时,也可以应用这一点:如果许多子节点都需要设定该 CSS 属性值,可以同一设定其父节点的该 CSS 属性,这样一来,所有的子节点再无需做额定设定,加速了 CSS 的分析效率。

  CSS 缩写可以让你用极少的代码定义一系列样式属性,这种做法可以极大水平的缩减代码量以到达提高性能的目标。

  规矩越多,匹配越慢,上面一种规则须要进行 6 项匹配,先找“columnClass”,再找“td”,而后是“tr”,“table&rdquo,CSS Sprites技术以及图片优化;,最后是合乎“mailfolder”为“true”的 span,这种效力是十分慢的。假如用一个比拟特别的 class 替换(span-mailfolder-tbl-tdCol),效率会快上好多少倍。

  CSS 抉择器

button.indented {...}----->>.button-indented {...}  

 

 

  依照我们惯常的懂得,编译器应该是先查找 id 为“toc”的节点,然后在他的所有直接子节点中查找类型(tag)为“li”的节点,将“font-weight”属性运用到这些节点上。

Margin-top: 2px;   Margin-right: 5px;   Margin-bottom: 2em; ,CSS Sprites技术;  Margin-left: 15px;   ,CSS Sprites图片合并技术减少请求优缺点;  ----->>     Margin: 2px 5px 2em 15px;    Border-width: 1px;   Border-style: solid;   Border-color: #000     ----->>     border: 1px solid #000    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% ,css reset重置基础代码;sans-serief    Background-color: #f00;   Background-image: url(background.gif);   Background-repeat: no-repeat;   Background-attachment: fixed;   Background-position: 0 0;    ----->>background: #f00 url(background.gif) no-repeat fixed 0 0    list-style-type: square;   list-style-position: inside;   List-style-image: url(image.gif)  ----->> list-style: square inside url(image.gif)  

 

  清单 11. 尽量避免使用 descendant selector

  对 @import 跟 两种加载外部 CSS 文件的方式:@import 就相称于是把 标签放在页面的底部,所以从优化性能的角度看,应当尽量避免使用 @import 命令

 

 

 

  这里,按照我们惯例的理解,箭头左边的写法仿佛是应该更快的,由于它的限度更多。实在不然,id 是全局唯一的,在匹配 CSS 选择器时浏览器定位到 id 是最快的,如果随同有其余的非 id 的 selector,反而会影响匹配的效率。

 

[hidden="true"] { ... } /* A universal rule */   

 

  关于 CSS 的 class 声明和定义,也有简写的方式

  Web 开发中时常会碰到性能的问题,尤其是 Web 2.0 的应用。CSS 代码是把持页面显示样式与后果的最直接“工具”,但是在性能调优时他们通常被 Web 开发工程师所疏忽,而事实上不标准的 CSS 会对页面渲染的效率有重大影响,尤其是对于结构庞杂的 Web 2.0 页面,这种影响更是不可磨灭。所以,写出规范的、高性能的 CSS 代码会极大的提高应用程序的效率。本文主要来探讨一下如何优化,以及从哪些方面优化应用程序的 CSS 代码,从而最大限度的提高 Web 应用的性能。

  关于色彩,反复的属性值可以省略。

  CSS 缩写

  这里的匹配规则很显明:查找页面上的所有节点,如果有节点存在“hidden”属性,并且其属性值为“true”,则匹配成功。这是最耗时耗力的匹配,页面上的所有节点都需要进行匹配运算,这种规则应尽量避免。

Background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" ) 

 

#toc  li {font-weight: bold} 

 

  这种 Class 简写的方法能够极大的缩减咱们的代码,进步阅读器剖析辨认的效率。

#toc > li {font-weight: bold}  

 


(责任编辑:网站建设)
CSS 性能调优相关文章
上一篇:CSS 必知的7个知识点 下一篇:CSS 直方图布局示例
回到顶部