CSS系列:表达式(Expression)`淘汰`
概述
CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。
兼容性
expression方法在其它浏览器中不起作用,因此在跨浏览器的设计中单独针对Internet Explorer
设置时会比较有用。
例子
隔1s切换一次背景颜色 input鼠标移入移出变换背景
body{
background-color: expression( (new Date()).getSeconds()%2 ? "#B8D4FF" : "#F08A00" );
}
input
{
star : expression(
onmouseover=function(){this.style.backgroundColor="green"},
onmouseout=function(){this.style.backgroundColor="red"}
)
}
<body >
<input type="text"/>
</body>
问题
算频率要比我们想象的多。千上万次并且可能会对你页面的性能产生影响。
页面显示
和缩放
时,就是在页面滚动
、乃至移动鼠标
时都会要重新计算一次。随便移动鼠标都可以轻松达到10000次
以上的计算量。
查看方式
- 给CSS表达式增加一个计数器可以跟踪表达式的计算频率。
解决方案
- this使用
- 使用
一次性表达式
? - 如果样式属性必须在页面周期内动态地改变,使用
事件句柄来代替CSS表达式
是一个可行办法? - 使用jQuery方法代替
移除
在IE中,CSS是可以嵌入js表达式的,可以在CSS类中定义,但是将含有表达CSS类从DOM对象中移除,样式表达式是不会失效的。
需要使用js调用style对象的removeexpression_r()
方法才可去除。
如:width:expression_r(this.width > 730 ? "730px" : true);
需要使用:
$('#test')[0].style.removeexpression_r('width');去掉。
废弃
http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx
不再支持CSS表达式的原因
- 更加符合标准
- 更加有利于性能提升
- 以及减少受攻击面
CSS系列:表达式(Expression)`淘汰`的更多相关文章
- 你应该了解的强大CSS表达式 ----- expression
IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性.就是说CSS属性后面可以是一 ...
- .net 系列:Expression表达式树、lambda、匿名委托 的使用
首先定义一个泛型委托类型,如下: public delegate T Function<T>(T a, T b); 实现泛型委托的主体代码,并调用: public static strin ...
- css中的expression
最近对CSS中的行为比较感兴趣,虽然是不符合标准的也只有ie才能识别,但是他确实给css的功能扩展了不少.下面是摘自互联网上的文字和例子,因为都被转烂了,没法注明出处. IE5及其以后版本支持在CSS ...
- 你不知道的css中的expression
expression是在IE5版本之后支持使用的,用来把CSS属性和Javascript脚本关联起来,[这里的CSS属性可以是元素固有的属性,也可以是自定义属性.]是动态设置CSS属性的强大方法,但也 ...
- 深入理解脚本化CSS系列第六篇——脚本化伪元素的6种方法
× 目录 [1]动态样式 [2]CSS类[3]setAttribute()[4]CSSRule对象添加[5]空样式覆盖[6]CSSRule对象删除 前面的话 我们可以通过计算样式来读取伪元素的样式信息 ...
- css系列教程1-选择器全解
全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css系列教程1-选择器全解 css系列教程2-样式操作全解 css选择器全解: css选择器包括:基本选择器.属性选择器.伪类选择器.伪元 ...
- lambda表达式Expression<Func<Person, bool>> 、Func<Person, bool>区别
前言: 自己通过lambda表达式的封装,将对应的表达式转成字符串的过程中,对lambda表达式有了新的认识 原因: 很多开发者对lambda表达式Expression<Func<Pers ...
- CSS系列 (05):浮动详解
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. -- W3C 文字环绕 float可以 ...
- CSS系列——浏览器默认样式
了解HTML标签在各浏览器当中的默认样式,可以让我们了解,为什么会要写Reset.css,Reset.css当中要怎么写样式最合理.试着思考下面的问题: 为什么会有默认样式? 每个浏览器的默认样式有什 ...
随机推荐
- MVC准备前基础知识
一.自动属性C#自动属性可以避免原来这样我们手工声明一个私有成员变量以及编写get/set逻辑public class Product{ public int Id { get; set; } pub ...
- vijos 1028 LIS *
链接:点我 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...
- Sonar+Hudson+Maven构建系列之一:安装Sonar
摘要:本系列讲述Sonar在Linux下安装及配置过程,windows下的安装类似,会更简单. 本人经过一翻摸索,终于将Sonar+Hudson+Maven配置成功,并使用Hudson进行自动构建,发 ...
- AndroidStudio
Google官方的Android集成开发环境(IDE = Integrated Development Environment),Eclipse + Adt插件的代替者. 实用设置: android ...
- CodeForces 222B Cosmic Tables
Cosmic Tables Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Subm ...
- hdu2955
#include<bits/stdc++.h> using namespace std; struct Bank { double cau; int money; }bank[]; ]; ...
- javascript优化--06模式(对象)01
命名空间: 优点:可以解决命名混乱和第三方冲突: 缺点:长嵌套导致更长的查询时间:更多的字符: 通用命名空间函数: var MYAPP = MYAPP || {}; MYAPP.namespace = ...
- jquery概要--基础02
复制节点:clone();默认不会复制绑定事件,如果传入参数true会复制:替换节点: replaceWith() //原节点放在前,新节点放在在后: replaceAll( ...
- c#知识总结1
一.C#程序结构 一个c#程序主要包括以下部分 ①命名空间声明 ②一个class ③class方法 ④class属性 ⑤一个main方法 ⑥语句 和 表达式 以及 注释 简单的“Helloworld” ...
- http://www.roncoo.com/article/detail/124822
http://www.roncoo.com/article/detail/124822