当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS Expression 优化

CSS样式表
图片的alt(替换文本)属性描述
CSS布局实例代码 两列布局实例
将PSD网站模板转换为XHTML+CSS
div+css 定位浅析
CSS 浏览器专用
css设置z-index 失效的解决方法
Div+Css实现屏蔽效果
css 鼠标经过文字变色
不用JS只用CSS制作的网页下拉菜单
CSS 类名的长命名和短命名
css ul li 的使用及浏览器兼容问题
div中英文无法自动换行的解决办法
CSS 基础教程 在网页中使用CSS
CSS技巧 使用标签来创建导航菜单(滑动门教程)
用css创建一个类似按扭的导航
css 横向菜单实现代码
使用CSS做出一个嵌套导航.
css 列表菜单的设计
网页中图片应用CSS的滤镜的效果
CSS 漂亮搜索框美化代码

CSS样式表 中的 CSS Expression 优化


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-03   浏览: 79 ::
收藏到网摘: n/a

IE 浏览器中 CSS Expression 特性的最大的问题:会反复执行,每秒钟可能执行了成百上千次,有严重的性能问题。

如何对 CSS Expression 进行优化呢?

至少:如果我们将 CSS Expression 在匹配的元素中仅执行一次,性能将会提升很大。

old9《CSS Expression Reloaded》一文中提供了一个解决方案:

在 CSS Expression 语句体里,将触发该 Expression 的 CSS 属性重置。

例如:

div {
    zoom
: expression(function(el){el.style.zoom = "1"; alert(el.tagName);}(this));
}

补充几点:

       
  1. CSS Expression 执行在任意一个匹配的元素上。
  2.    
  3. 在 CSS expression 内, “this”关键字指向当前匹配的 HTML 元素。
  4.    
  5. CSS 属性选用一些不常用的属性来触发,触发完重置回默认值。

最近在 Ajaxian 的文章《Creating a querySelector for IE that runs at “native speed”》 中看到作者 Dion Almaer 也提供了一个类似的解决方式:

div {
   
-singlex: expression(this.singlex ? 0 : (function(t) { alert(t.tagName); t.singlex = 0; } )(this));
}

但此代码并没有完全解决 CSS Expression 最大的性能问题。因为每次触发还是要去执行 Expression 脚本,比如你滚动鼠标的中间滚轮。

最后强调,仅是对 CSS Expression 做了优化,但并未说 CSS Expression 就不存在其他方面的问题。