scrollTop失效問題

2021-09-17 23:13:41 字數 1868 閱讀 9384

最近在做京東案例:當搜尋框隨著滾動條的滾動產生漸變效果

/**

* 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)   被放置在 || 的中間位置。 

因為當數字0undefine進行 或運算時,系統預設返回最後乙個值。即或運算中 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 ...