css expression应用-尽量不用

只有 IE 支持 CSS Expression,从IE8开始不再支持CSS Expression.

CSS Expression也称为CSS表达式,它是动态设置CSS属性的强大方法,但也存在着一定的危险性。

CSS Expression的问题就在于它的 计算频率要比想象的多出很多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS Expression增加一个 计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。所以它对客户端浏览器资源有比较高的要求,否则很容易让您的用户感觉打开你的页面,机器会变的很慢。

然而在 IE8 标准模式中,不再支持 CSS Expression。官方提供了以下几点原因:

  1. 为了更好的遵循标准
    • CSS Expression 为 IE 专有,不具备通用性;
    • CSS Expression 常常用来修复或模拟某些 IE 不支持的 CSS 特性,如 ‘min-height’、’max-width’。这些均已被 IE8 所支持。
  2. 为了提高性能
    表达式的计算需要耗费巨大的系统资源,Web 性能专家 Steve Sounders:recommend avoiding them to improve front-end performance
  3. 为了降低浏览器被攻击的可能
    由于它们暴露出了一个脚本执行环境,CSS Expression 就构成了一个可能的脚本注入攻击方向。

关于 动态属性 的更多内容,请参见 MSDN:About Dynamic Properties

关于 微软官方结束对 CSS Expression 的支持 的更多内容,请参见 MSDN:Ending Expressions

IE 中使用 CSS Expression 多数情况下是为了修复或模拟某些 IE 不支持的 CSS 特性, 比如IE下的“min-height”,和”position:fixed.”  IE6下的’max-width’等等。

然而CSS Expression 是一个已经过时的技术,微软官方日后可能不会再对其进行开发及支持。 除非为了利用 CSS hack 去弥补某些 IE 中不支持的 CSS 特性,否则应尽量避免使用 CSS Expression。

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Protected by WP Anti Spam