最近在做京東案例:當搜尋框隨著滾動條的滾動產生漸變效果
/**
* created by administrator on 2019/4/11.
*/window.onload = function ()
}}
scrolltop始終沒有效果,最後的結果是scrolltop有相容性
1、各瀏覽器下 scrolltop的差異
ie6/7/8:
對於沒有doctype宣告的頁面裡(混雜模式)可以使用document.body.scrolltop來獲取 scrolltop高度;
對於有doctype宣告的頁面(嚴格模式)則可以使用document.documentelement.scrolltop;
safari:
safari 比較特別,有自己獲取scrolltop的函式 :window.pageyoffset ;
firefox:
火狐等等相對標準些的瀏覽器就省心多了,直接用document.documentelement.scrolltop ;
2、獲取scrolltop值
完美的獲取scrolltop 賦值短語 :
var scrolltop = document.documentelement.scrolltop || window.pageyoffset || document.body.scrolltop;
通過這句賦值就能在任何情況下獲得scrolltop 值。
仔細觀察這句賦值,你發現啥了沒??
沒錯, 就是window.pageyoffset (safari) 被放置在 || 的中間位置。
因為當數字0與undefine進行 或運算時,系統預設返回最後乙個值。即或運算中 0 == undefine ;
當頁面滾動條剛好在最頂端,即scrolltop值為 0 時。 ie 下 window.pageyoffset (safari) 返回為 undefine ,此時將window.pageyoffset (safari) 放在或運算最後麵時, scrolltop 返回 undefine , undefine 用在接下去的運算就會報錯咯。
而其他瀏覽器 無論 scrolltop 賦值或運算順序如何都不會返回 undefine. 可以安全使用..
所以說到頭還是ie的問題咯. 杯具…
精神有點恍惚,不知道有沒有表達清楚。
不過最後總結出來這句實驗過ok,大家放心使用;
var scrolltop = document.documentelement.scrolltop || window.pageyoffset || document.body.scrolltop;
頁面具有 dtd,或者說指定了 doctype 時,使用 document.documentelement。
頁面不具有 dtd,或者說沒有指定了 doctype,時,使用 document.body。
在 ie 和 firefox 中均是如此。
為了相容,不管有沒有 dtd,可以使用如下**:
var scrolltop = window.pageyoffset //用於safari|| document.documentelement.scrolltop (嚴格模式)
|| document.body.scrolltop (混雜模式)
|| 0;
安卓手機scrollTop失效問題記錄
在做移動端適配的時候,監聽scroll事件 componentdidmount handlescroll this.props const this.props.store if srcollheight scrolldom.clientheight 632 如果是先查詢的要重製計數 pagenum...
scrollTop以及DIV高度問題
1 html頁面的scrolltop值受doctype的影響,有的是通過document.documentelement.scrolltop獲取,有的是document.body.scrolltop獲取 2 div只有內聯設定了width或者height之後,才能通過element.style.he...
獲取不到scrollTop的問題
今天在開發過程中需要獲取scrolltop,但是不論是用原生的scrolltop還是jq的scrolltop獲取到的值始終為0。原來是doctype的坑。獲取scrolltop始終為0 可正常獲取scrolltop所以說,按照w3c標準開發是多麼的重要 各瀏覽器下 scrolltop的差異 ie6 ...