CSS中使用expression表达式
逛到发现这个效果,个人感觉非常赞
下面是CSS样式
input {
border:1px solid #B3D6EF;
background:#ffffff;
}
input {
star : expression(
onmouseover=function(){this.style.backgroundColor="#D5E9F6"},
onmouseout=function(){this.style.backgroundColor="#ffffff"})
}
好处在于 不用在页面中写一堆一堆的onMouseover函数了
lolo
有些问题需要注意下,这种写法有可能在IE6下造成浏览器卡死,目前做的一个旧出现了卡死现象...
这里引用下怪飞的一篇CSS优化的文章
浏览器中 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));
}
或者
div {
-singlex: expression(this.singlex ? 0 : (function(t) { alert(t.tagName); t.singlex = 0; } )(this));
}
说明一下~:
CSS Expression 执行在任意一个匹配的元素上。
在 CSS expression 内, “this”关键字指向当前匹配的 HTML 元素。
CSS 属性选用一些不常用的属性来触发,触发完重置回默认值。
关于Expression,雅虎团队提到这些
避免使用CSS表达式(Expression)
CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景颜色:
background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );
如上所示,expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。expression方法在其它浏览器中不起作用,因此在跨浏览器的设计中单独针对Internet Explorer设置时会比较有用。
表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。
一个减少CSS表达式计算次数的方法就是使用一次性的表达式,它在第一次运行时将结果赋给指定的样式属性,并用这个属性来代替CSS表达式。如果样式属性必须在页面周期内动态地改变,使用事件句柄来代替CSS表达式是一个可行办法。如果必须使用CSS表达式,一定要记住它们要计算成千上万次并且可能会对你页面的性能产生影响。
相关文章
- 用CSS的expression判断表达式设置input样式,简单,轻量级。缺点在于expression判断表达式FireFox是不支持的。致命的是只能区分出一个(例如例子中就只能区分出text文本框2009-06-14
- CSS中写expression可能会在Chrome中有问题.2010-01-27
- CSS表达式会降低浏览器的渲染性能;用其他方案替换它们将会改善IE浏览器的渲染性能。2010-03-09
CSS中使用expression完美设置页面最小宽度(兼容ie)
CSS中使用expression有ie才能识别,其把CSS属性和Javascript表达式关联起来,效果相当于min-width,即实现了兼容ie,示例如下,感兴趣的朋友可以参考下,希望对大家有所帮2013-07-31- css expression(css表达式)又称Dynamic properties(动态属性)是早期微软DHTML的产物,微软从IE8 beta2标准模式开始,取消对css expression的支持,感兴趣的朋友可以了解下2013-11-04
- IE6不支持固定定位(position:fixed)是众所周知的事情,想在IE6做出固定定位的效果就只能用JS,用js会出现“跳动”的效果,下面为大家介绍下CSS中的行为expression2014-03-03
CSS表达式(expression)解决IE6 position:fixed无效问题
IE6 position:fixed无效在做兼容时,很是头疼,本例通过一条Internet Explorer的CSS表达式(expression)来完美的实现ie6下position:fixed效果,有需要的朋友可以参考下2014-07-28
最新评论