WEB移動端粘黏吸頂效果的解決方案
一般的header吸頂,通常是給上一個fixed定位便可實現,而類似于上圖這樣的“粘黏吸頂”,也是一個比較常見的需求
“粘黏吸頂”大概的思路是這樣:首先,給吸頂欄一個absolute或者relative定位,通過js去監聽scroll事件觸發一個判斷吸頂欄高度的函數,當吸頂欄的高度距離可視區域頂部小于等于0時,將其定位方式替換成fixed,大于0時再替換回absolute或者relative
以上的思路在PC端和安卓端均是可行的,但在iOS上,判斷高度的函數卻并不會隨著scroll事件每次都觸發,而是在滑動停止后才去觸發這個函數
google一下“iOS onscroll event delay”得知,這是iOS8作出的改變,在web頁面滾動時,不觸發js
http://developer.telerik.com/...
這里我只是需要實現一個吸頂效果,不涉及其他邏輯代碼,如果一定要通過scroll觸發的話,只能使用iSroll等其他第三方庫來取代iOS的原生滾動
回到吸頂問題,為了一個效果引入一個第三方庫的成本有點大,于是又尋找了一下,發現了一個知道但是沒有重視過的position屬性sticky,顧名思義,這個屬性的作用就是粘黏,理論上是不需要通過js就能實現“粘黏吸頂”的,但是這個屬性在PC端以及安卓移動端的表現不盡人意,兼容性還是差了點,然而,在iOS端的表現卻非常出色,iOS6.1以上的系統均支持
所以最后的解決方案就是:
首先判斷當前系統,如果是Android,就通過常規的監聽scroll事件并使用fixed定位;iOS便使用sticky定位
//Android .tab-box-fixed { position: fixed; z-index: 5; } //iOS .tab-box-sticky { position: -webkit-sticky; position: sticky; top: 0; left: 0; z-index: 5; }
來自:https://segmentfault.com/a/1190000008489692
本文由用戶 gt4317 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!