不要使用CSS Expression的原因分析
更新時(shí)間:2008年09月10日 10:27:00 作者:
CSS Expression也稱為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)生影響。不要讓您的用戶感覺(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)生影響。不要讓您的用戶感覺(jué)打開(kāi)你的頁(yè)面,機(jī)器會(huì)變的很慢。
相關(guān)文章
引用字體時(shí)圖標(biāo)無(wú)法顯示_字體文件不存在問(wèn)題
最近一個(gè)項(xiàng)目,css,js等靜態(tài)資源做了cdn部署,瀏覽網(wǎng)站時(shí)發(fā)現(xiàn)font?awesome字體圖標(biāo)通通不能正常顯示。只有一些奇怪的符號(hào)。瀏覽器控制臺(tái)報(bào)錯(cuò)信息:font-face引用字體跨域。2023-06-06網(wǎng)頁(yè)中關(guān)閉IE的圖像工具欄和XP主題
網(wǎng)頁(yè)中關(guān)閉IE的圖像工具欄和XP主題...2007-01-01通過(guò)CSS Hack 區(qū)分 FF/IE7/IE6/IE5.5/IE5 代碼推薦
通過(guò)CSS Hack 區(qū)分 FF/IE7/IE6/IE5.5/IE5 代碼推薦...2007-01-01web標(biāo)準(zhǔn)常見(jiàn)問(wèn)題集合5
web標(biāo)準(zhǔn)常見(jiàn)問(wèn)題集合5...2006-12-12