本文和大家重點討論一下讓IE6支持fixed的簡單方法,在主題制作或者修改中一些元素要設置為隨頁面滾動的效果,通常的做法是加上fixed屬性,或者干脆用JS實現這個功能。
讓IE6支持fixed的簡單方法
最近發現一個小問題:在主題制作或者修改中一些元素要設置為隨頁面滾動的效果,通常的做法是加上fixed屬性,或者干脆用JS實現這個功能。
不過對於懶得去後台更新js文件的同學來說,這不是個好辦法,或者對於還未引入JS的同學,這更不是好辦法。但是不用的話在IE6下會無效,這個經典到目前訪問量的半數以上的浏覽器版本是直接無視fixed的(當然還有其他若干問題,所以希望更新或扔掉該浏覽器)。
關於這個問題的解決辦法,我之前的做法一直是用_position:absolute來暫時修訂,當然這麼做產生的效果和想象中的差距很大。最近發現一個方法來修正IE6的fixed效果,如下:
- _top:expression(documentElement.scrollTop+數值+"px")
也是一個簡單的hack,對於不想引入JS又迫切希望使用fixed屬性的人來說,確實是個好辦法。
More:
Q:有時候好像使用document.body.scrollTop來獲取滾動條滾動的長度,結果滾動後得到的也是0,為什麼改用document.documentElement.scrollTop就可以了?
A:可以查看一下源代碼,如果沒有
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHtml1.0Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
這一句那麼可以用document.body.scrollTop,否則只能用document.documentElement.scrollTop。
原因:在標准w3c下,document.body.scrollTop恆為0,需要用document.documentElement.scrollTop來代替;document.documentElement.scrollTop中documentElement對應的是Html標簽;document.body.scrollTop中body對應的是body標簽。