鼠標滾輪更改transform的值(vue-scroller在PC端的上下滑動)

  目前上拉刷新,下拉加載,以及區域回彈的組件,絕大多數都是經過transform去實現的。在移動端效果很好,可是PC端使用鼠標拖拽的方式,查看下文首先不符合邏輯,其次容易點進其餘頁面vue

  起初,項目的初衷是在微信瀏覽器中查看,可是客戶反應有些頁面pc端沒辦法上下滑動(使用了vue-scroller的頁面都跪了)。鼠標滾輪默認控制的是滾動條,不是容器的transform屬性,怎麼可能上下滑動。jquery

  而後就想若是能監聽到鼠標滾輪事件,而後再更改transform:translate3d(x,y,z),這樣不就能夠實現pc端vue-scroller的滾動了嗎;度娘了一下,還真有鼠標滾輪事件,叫作mousewheel,這貨但是原生JS的事件,jquery-free的同窗,能夠大膽使用。不過比較坑的是這個事件比較冷門,通常沒人用,因此官方文檔也不詳細。瀏覽器

window.onmousewheel = function (e) {
  if(e.wheelDelta<0){
      
  }else{
      
  }
}

  這個事件包含了一個鼠標事件所沒有的屬性,wheelDelta,這個屬性值始終是120的倍數,並且向上滑動一單位,wheelDelta值爲120的倍數,向下爲-120的倍數。微信

下文是vue-scroller在pc端的處理this

let _this = this;//此this指向的是vue
window.onmousewheel = function (e) {
  if(e.wheelDelta<0){
    _this.$refs.scrollerBottom && (_this.$refs.scrollerBottom.scrollBy(0, 30, false));//避免ref中不存在scrollerBottom
  }else{
    _this.$refs.scrollerBottom && (_this.$refs.scrollerBottom.scrollBy(0, -30, false));
  }
}

  vue-scroller中scrollBy和scrollTo的區別就不細講了,scrollTo就是把View移動到屏幕的X和Y位置,也就是絕對位置。而scrollBy則是相對位置。
  很簡單的就實現了vue-scroller在pc端的上下滑動。(經過觸摸板滾動,其實也是調用onmousewheel)spa

相關文章
相關標籤/搜索