onscroll在移動端的使用


1.實際需求

  (移動端項目)當往下滑動到一定距離時,顯示導航欄,導航欄定位在頂部,當向上滑動並小於那個距離時,導航欄隱藏。 

2.解決方案

  實時監測瀏覽器滾動高度,綁定onscroll事件,具體詳情見此文--https://github.com/merrier/mobile-scroll-events,此文介紹的很詳細,包括在Android 和 ios上的兼容性問題,以及處理方案。下面說點此文沒有的。 

3.期間所遇問題

  1. scrollY & pageYOffset 
      當時因未知原因,使用scrollTop在ios上測試失敗,后在上文鏈接中的參考文章onscroll Event Issues on Mobile Browsers中,發現里面的實例使用的window.scrollY,可以實時反映滾動條滾動高度,即便是慣性滾動也能成功反映出。pageYOffset是scrollY的別名,區別在於pageYOffset的兼容性比較好。
  2. 關於pageYOffset出現的bug問題 
      官方給出的定義為只讀,然而實際情況卻是如下:(實例為仿百度做的)

(1)綁定onscroll事件

(2)導航切換,頁面滾動到222px的地方,不顯示上方的搜索框內容

(3)頁面初始進去,沒什么問題,效果正常。但是當切換了導航后,問題就來了,滾動到頂部,導航卻出現了,

(4)觀察到打印出的window.pageYOffset,在切換了導航后一直為 222, what??????

這個怎么看怎么像是被賦值了,說好的只讀呢?(暫未理解。。。)

(5)最后的解決辦法,就是把window.pageYOffset去掉了,不用效果也是正常的(當時陰差陽錯才用到這個)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM