expression屬性是在IE5版本以後支持使用的,用來把CSS屬性和JavaScript腳本關聯起來。簡單粗暴的說,該屬性是用來調用JavaScript代碼的。css
CSS屬性後面是一段JavaScript代碼,CSS的值是JavaScript表達式計算的結果。html
.box1{ position: absolute; top: expression(eval(document.documentElement.scrollTop+80)); /* 這裏須要獲取滾動高度+元素本來的高度 */ z-index: 999; }
document.documentElement.scrollTop 的意思是獲取當前頁面滾動條所滾動到的位置的數值,而再用eval()函數把它計算成數值。express
這句代碼最終的意思就是:你瀏覽器窗口的滾動條滑到哪,這個元素的位置就在哪。瀏覽器
用CSS自定義屬性Expression對錶格行間隔背景批量定義性能優化
<html> <head> <title></title> <style type="text/css"> tr{ bg:expression('#F8F8F8,#EFEFEF'.split(',')[rowIndex%2]); } </style> </head> <body> <table width="100%" border="0"> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> </table> </body> </html>
上面的代碼能夠實現表格行背景色(#F8F8F8,#EFEFEF)交替出現,不須要每行單獨定義。函數
bg是本身任意定義的屬性。在自定義屬性與expression之間可別忘了還有一個引號,由於實質仍是CSS,因此放在style標籤內,而非script內。性能
不是很是須要,通常不建議使用expression,由於expression對瀏覽器資源要求比較高優化
CSS expression的問題就在於它的計算頻率要比想象的多出不少。不單單是在頁面顯示和縮放時,就是在頁面滾動、乃至移動鼠標時都會要從新計算一次。給CSS expression增長一個計數器能夠跟蹤表達式的計算頻率。在頁面中隨便移動鼠標均可以輕鬆達到10000次以上的計算量。code
一個減小CSS expression計算次數的方法就是使用一次性的表達式,它在第一次運行時將結果賦給指定的樣式屬性,並用這個屬性來代替CSS expression。htm
CSS expression屬性存在不少問題,最好的優化就是不使用該屬性。