不要使用CSS Expression的原因分析
更新時(shí)間:2008年09月10日 10:27:00 作者:
CSS Expression也稱(chēng)為CSS表達(dá)式,它是動(dòng)態(tài)設(shè)置CSS屬性的強(qiáng)大方法,但也存在著一定的危險(xiǎn)性。
在CSS Expression中使用JavaScript表達(dá)式。CSS屬性根據(jù)JavaScript表達(dá)式的計(jì)算結(jié)果來(lái)設(shè)置。
CSS Expression在其它瀏覽器中不起作用,因此在跨瀏覽器的編碼中單獨(dú)針對(duì)IE設(shè)置時(shí)會(huì)比較有用。
從IE5開(kāi)始支持CSS Expression。我們看下面的代碼:
background-color: expression( (new Date()).getHours()%2 ? "#F00" : "#00F" );
上面的代碼是使用CSS Expression,實(shí)現(xiàn)隔一個(gè)小時(shí)切換一次背景顏色。
CSS Expression的問(wèn)題就在于它的計(jì)算頻率要比想象的多出很多。不僅僅是在頁(yè)面顯示和縮放時(shí),就是在頁(yè)面滾動(dòng)、乃至移動(dòng)鼠標(biāo)時(shí)都會(huì)要重新計(jì)算一次。給CSS Expression增加一個(gè)計(jì)數(shù)器可以跟蹤表達(dá)式的計(jì)算頻率。在頁(yè)面中隨便移動(dòng)鼠標(biāo)都可以輕松達(dá)到10000次以上的計(jì)算量。
一個(gè)減少CSS Expression計(jì)算次數(shù)的方法就是使用一次性的表達(dá)式,它在第一次運(yùn)行時(shí)將結(jié)果賦給指定的樣式屬性,并用這個(gè)屬性來(lái)代替CSS Expression。
如果樣式屬性必須在頁(yè)面周期內(nèi)動(dòng)態(tài)地改變,使用事件句柄來(lái)代替CSS表達(dá)式是一個(gè)可行辦法。如果必須使用CSS Expression,一定要記住它們要計(jì)算成千上萬(wàn)次并且可能會(huì)對(duì)你頁(yè)面的性能產(chǎn)生影響。不要讓您的用戶(hù)感覺(jué)打開(kāi)你的頁(yè)面,機(jī)器會(huì)變的很慢。
CSS Expression在其它瀏覽器中不起作用,因此在跨瀏覽器的編碼中單獨(dú)針對(duì)IE設(shè)置時(shí)會(huì)比較有用。
從IE5開(kāi)始支持CSS Expression。我們看下面的代碼:
復(fù)制代碼 代碼如下:
background-color: expression( (new Date()).getHours()%2 ? "#F00" : "#00F" );
上面的代碼是使用CSS Expression,實(shí)現(xiàn)隔一個(gè)小時(shí)切換一次背景顏色。
CSS Expression的問(wèn)題就在于它的計(jì)算頻率要比想象的多出很多。不僅僅是在頁(yè)面顯示和縮放時(shí),就是在頁(yè)面滾動(dòng)、乃至移動(dòng)鼠標(biāo)時(shí)都會(huì)要重新計(jì)算一次。給CSS Expression增加一個(gè)計(jì)數(shù)器可以跟蹤表達(dá)式的計(jì)算頻率。在頁(yè)面中隨便移動(dòng)鼠標(biāo)都可以輕松達(dá)到10000次以上的計(jì)算量。
一個(gè)減少CSS Expression計(jì)算次數(shù)的方法就是使用一次性的表達(dá)式,它在第一次運(yùn)行時(shí)將結(jié)果賦給指定的樣式屬性,并用這個(gè)屬性來(lái)代替CSS Expression。
如果樣式屬性必須在頁(yè)面周期內(nèi)動(dòng)態(tài)地改變,使用事件句柄來(lái)代替CSS表達(dá)式是一個(gè)可行辦法。如果必須使用CSS Expression,一定要記住它們要計(jì)算成千上萬(wàn)次并且可能會(huì)對(duì)你頁(yè)面的性能產(chǎn)生影響。不要讓您的用戶(hù)感覺(jué)打開(kāi)你的頁(yè)面,機(jī)器會(huì)變的很慢。
相關(guān)文章
當(dāng)ie7不認(rèn)!important之后 [布局的解決辦法]
當(dāng)ie7不認(rèn)!important之后 [布局的解決辦法]...2007-02-02
從Table向Css過(guò)渡的優(yōu)缺點(diǎn)比較
從Table向Css過(guò)渡的優(yōu)缺點(diǎn)比較...2007-02-02
ie6,ie7,ie8完美支持position:fixed的終極解決方案
ie6對(duì)position:fixed不支持,網(wǎng)上有很多解決方法,有的在ie6,ie7上調(diào)試成功后,在ie8上又不好使,div層還是跟隨滾動(dòng)條浮 動(dòng);以下總結(jié)方法,在ie6,ie7,ie8上都調(diào)試成功,且頁(yè)面滾動(dòng)條滾動(dòng)時(shí),效果還挺好,div層并不會(huì)閃爍。2014-05-05
CSS實(shí)現(xiàn)的一個(gè)圖片放大展示的一種思路
CSS實(shí)現(xiàn)的一個(gè)圖片放大展示的一種思路...2007-10-10
給自己的網(wǎng)站制作一個(gè)favicon.ico圖標(biāo)的實(shí)現(xiàn)方法
給自己的網(wǎng)站制作一個(gè)favicon.ico圖標(biāo)的實(shí)現(xiàn)方法...2007-03-03

