1.實際需求
(移動端項目)當往下滑動到必定距離時,顯示導航欄,導航欄定位在頂部,當向上滑動並小於那個距離時,導航欄隱藏。 ios
2.解決方案
實時監測瀏覽器滾動高度,綁定onscroll事件,具體詳情見此文--https://github.com/merrier/mobile-scroll-events,此文介紹的很詳細,包括在Android 和 ios上的兼容性問題,以及處理方案。下面說點此文沒有的。 git
3.期間所遇問題
- scrollY & pageYOffset
當時因未知緣由,使用scrollTop在ios上測試失敗,後在上文連接中的參考文章onscroll Event Issues on Mobile Browsers中,發現裏面的實例使用的window.scrollY,能夠實時反映滾動條滾動高度,即使是慣性滾動也能成功反映出。pageYOffset是scrollY的別名,區別在於pageYOffset的兼容性比較好。 - 關於pageYOffset出現的bug問題
官方給出的定義爲只讀,然而實際狀況倒是以下:(實例爲仿百度作的)
(1)綁定onscroll事件github
(2)導航切換,頁面滾動到222px的地方,不顯示上方的搜索框內容瀏覽器
(3)頁面初始進去,沒什麼問題,效果正常。可是當切換了導航後,問題就來了,滾動到頂部,導航卻出現了,測試
(4)觀察到打印出的window.pageYOffset,在切換了導航後一直爲 222, what??????url
這個怎麼看怎麼像是被賦值了,說好的只讀呢?(暫未理解。。。)spa
(5)最後的解決辦法,就是把window.pageYOffset去掉了,不用效果也是正常的(當時陰差陽錯纔用到這個).net