在項目中安裝better-scroll:javascript
npm install --save better-scroll
組件中引入插件css
import BScroll from "better-scroll";
dom結構vue
<div class="bscroll" ref="bscroll"> <div class="bscroll-container"></div> </div>
注:dom結構規定這樣,滑動區域的內容放在bscroll-container中,不然,則可能不會成功java
部分csspython
.bscroll{ width: 100%; height: 5vH; overflow: hidden; }
注:父級bscroll必須有高度,而且overflow爲hidden;npm
插件使用markdown
mounted(){
this.$nextTick(() => { let bscrollDom = this.$refs.bscroll; this.aBScroll = new BScroll(bscrollDom,{}) }) }
注:
一、插件初始化時須要具體元素,因此再DOM結構中使用ref標記元素,以備插件使用;
二、建議放在nextTick方法裏面,避免DOM結構未渲染完成從而形成子元素bscroll-container高度計算不許確;
三、建議使用this.bscroll方式定義,以備在其餘方法中使用;app
按照以上步驟,即可以簡單的使用better-scroll插件了,效果以下圖dom
startX: 0 (默認值:0) 表示X軸滾動的起始值 startY: 0 (默認值:0) 表示Y軸滾動的起始值 scrollY: false (默認值:false) 表示延Y軸滾動 scrollX: true (默認值:true) 表示延X軸滾動 freeScroll: false (默認值:false) 自由方向滾動 scrollbar: false (默認值:false) 滾動條 > 注: 當開啓滾動條時,建議直接父級元素position設爲 relative;由於滾動條爲絕對定位, 爲避免滾動條相對其祖輩元素定位而出現滾動條不符合預期效果的現象 click: false (默認值:false) 是否派發點擊事件; > 注:若設置爲true仍然沒法觸發click事件,能夠在click事件中添加以下方法 首先在點擊事件中傳入 $event ;示例:@click = "doSome($event)"; 而後在事件中以下作法: doSome(event){ if(event._constructed){return true;} <!--在此下面寫入你的事件--> } momentum: true (默認值:true) 當快速滑動時是否開啓滑動慣性 bounce: true (默認值:true) 是否啓用回彈動畫效果 bounceTime: 700 (默認值:700,單位:ms)回彈動畫的動畫時長。 probeType: 可選值:一、二、3; (默認值: 0 不派發scroll事件)想要獲取滾動實時位置時派發事件的截流狀況 1 滾動的時候會派發scroll事件,會截流; 2 滾動的時候實時派發scroll事件,不會截流; 3 除了實時派發scroll事件,在swipe的狀況下仍然能實時派發scroll事件;
refresh() -> 從新計算 better-scroll,當 DOM 結構發生變化的時候務必要調用確保滾動的效果正常
scrollTo(x, y, time, easing) -> 滾動到指定的位置;
x: X軸位置;
y: Y軸位置;
time: 到達指定位置所需時間,單位ms;
easing: 動畫函數(通常不建議修改)
scrollBy(x, y, time, easing) -> 相對於當前位置偏移滾動 x,y 的距離;
x: 當前位置偏移X軸的距離
y: 當前位置偏移Y軸的距離
time: 到達偏移位置所需時間,單位ms;
easing: 動畫函數(通常不建議修改)
scrollToElement(el, time, offsetX, offsetY, easing) -> 滾動到指定的目標元素
el: 目標元素;
time: 到達目標元素所需時間,單位ms;
offsetX: 距離目標元素所偏移X軸的距離;設置爲true時,到達目標元素中心位置 offsetY: 距離目標元素所偏移Y軸的距離;設置爲true時,到達目標元素中心位置 easing: 動畫函數(通常不建議修改) 使用示例: this.aBScroll.scrollToElement("li",300);
beforeScrollStart -> 觸發時機:滾動開始以前
scrollStart -> 觸發時機:滾動開始時
scroll -> 觸發時機:滾動過程當中,具體時機取決於選項中的 probeType。
scrollCancel -> 觸發時機:滾動被取消。
scrollEnd -> 觸發時機:滾動結束。
touchEnd -> 觸發時機:鼠標/手指離開。
使用示例:
this.aBScroll.on('scroll',(pos) => { // 你能夠打印一下參數pos中都包含了什麼! <!--寫入你要觸發的事情--> })