CSS Expressions有多可怕

CSS Expressions 俗称 CSS 表达式,避免使用 CSS Expressions 是前端开发的一个重要指南,为什么要避免使用 CSS Expressions 呢?我们看看雅虎YUI的说明:

表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。

从上面可以看出 CSS Expressions 是如此的可怕。但也许单纯的文字说明还不能使你深入的明白 CSS Expressions 的可怕,那就引用子鼠的例子来实际说明吧:

XHTML 和 JS 代码:

<body>
计算了<input id="c" /><script type="text/javascript">
var k = 0;
function test() {
        k++;
        document.getElementById('c').value = k;
        return;   
}
</script>
<div>
        <ul>
                <li><a href="11111111111111111111">22222</a></li>
                <li><a href="11111111111111111111">22222</a></li>
                <li><a href="11111111111111111111">22222</a></li>
                <li><a href="11111111111111111111">22222</a></li>   
        </ul>
</div>
</body>

JS 代码是用来计算 CSS Expressions 的计算次数。

CSS Expressions 表达式代码:

body {
        font-size:12px;
        font-family:Verdana;
        line-height:1.9
}
div a {
        display:block;
        border:1px solid #FF3366;
        width:expression(this.offsetWidth > 750 ? test() : test());
}

查看Dome (用 IE6/IE7 查看)

从上面的例子就可以明显的看到 CSS Expressions 的计算的如此的频繁,由此可见它的可怕。

子鼠还提供了一个稍好一点的写法:

body {
        font-size:12px;
        font-family:Verdana;
        line-height:1.9
}
div a {
        display:block; border:1px solid #FF3366;
        width:expression(function(abc){
                abc.style.width = "750px";
                test();
        }(this));
}

查看Dome (用 IE6/IE7 查看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值