onscroll在移動端的使用

1.實際需求

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

2.解決方案

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

3.期間所遇問題

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

(1)綁定onscroll事件github

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

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

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

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

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

相關文章
相關標籤/搜索