造輪子的目的:
做專案的時候需要一個滾動監聽的功能,html結構已經都寫好了,不想使用vue元件的方式來寫,因為不想改造html結構,於是花了幾個小時做了一個簡單的,使用vue指令方式來做的,專案上夠用就結束了。 後來想想反正還差沒多少還不如完善完善做成外掛吧。 結果花了兩天多。。
先看效果
主要的坑:
- 滾動的動畫效果,抄襲了
vue-scrollactive
的做法,用到庫bezier-easing
。當然,這個外掛相對於vue-scrollactive
的優勢在於,我可以指定滾動容器,並不僅限於window下的滾動。 - 低版本的chrome核心 dom物件沒有
scrollTo
方法,使用dom.scrollTop = value
來替代。當然,這是基礎知識薄弱造成的。。。 - 某些瀏覽器不支援
document.body.scrollTop
; 某些瀏覽器不支援document.documentElement.scrollTop
。。呵呵噠 - vue中指令對於dom的操作時機:
inserted
是在created
之後,在mounted
之前
特性
- 滾動時判斷出視窗中當前元素
- 暴露api scrollTo 自由指定要滾到的位置
- 滾動容器自由指定,不侷限於window
- vue 指令的方式
- 監聽元素沒有任何限制,無需使用id 或者 class 標記。當然,如果要指定滾動容器,那必須要有一個id 或者class
- 導航列表沒有任何限制
缺陷
- 用起來不是那麼傻瓜式
- 動畫目前還不能自定義
- 目前還不能一個頁面指定兩個以上需要監聽的滾動容器