基于better-scroll實(shí)現(xiàn)移動(dòng)端vue上拉加載下拉刷新

插件地址
引用文章

一项栏、什么事better-scroll时鸵?

better-scroll 是一款重點(diǎn)解決移動(dòng)端(已支持 PC)各種滾動(dòng)場(chǎng)景需求的插件脐帝。它的核心是借鑒的 iscroll 的實(shí)現(xiàn)吟秩,它的 API 設(shè)計(jì)基本兼容 iscroll包蓝,在 iscroll 的基礎(chǔ)上又?jǐn)U展了一些 feature 以及做了一些性能優(yōu)化驶社。

better-scroll 是基于原生 JS 實(shí)現(xiàn)的,不依賴任何框架养晋。它編譯后的代碼大小是 63kb衬吆,壓縮后是 35kb,gzip 后僅有 9kb绳泉,是一款非常輕量的 JS lib。

better-scroll的滾動(dòng)原理

二姆泻、使用

1.安裝

首先在package.json里面加入better-scroll的依賴零酪,然后使用npm安裝

npm install better-scroll --save-dev
2.引入

在需要使用的插件中引入better-scroll

import BScroll from 'better-scroll'
3.vue使用better-scroll
//html
<template>
    <div class="tabbar">
        <div class="wrapper" ref="wrapper">
            <div class="bscroll-container">
                <!-- 刷新提示信息 -->
                <div class="top-tip">
                    <span class="refresh-hook">{{pulldownMsg}}</span>
                </div>
                <!-- 內(nèi)容列表 -->
                <ul class="content">
                    <li v-for="item in data">{{item}}</li>
                </ul>
                <!-- 底部提示信息 -->
                <div class="bottom-tip">
                    <span class="loading-hook">{{pullupMsg}}</span>
                </div>
            </div>
        </div>

        <!-- alert提示刷新成功 -->
        <div class="alert-hook" :style="{display: alertHook}">刷新成功</div>
    </div>
</template>
//js
<script>
import BScroll from "better-scroll"
const count = 1
    export default {
        data(){
            return {
                data: [0,1,2,3,4,5,6],
                pulldownMsg: '下拉刷新',
                pullupMsg: '加載更多',
                alertHook: 'none'
            }
        },
        methods: {
            getData() {
                return new Promise(resolve => {  //模擬數(shù)據(jù)請(qǐng)求
                    setTimeout(() => {
                        const arr = [];
                        for (let i = 0; i < 20; i++) {
                            arr.push(count++)
                        }
                        resolve(arr)
                    }, 1000)
                })
            },
            refreshalert(){   //刷新成功提示
                this.alertHook = 'block';
                setTimeout(()=>{
                    this.alertHook = 'none'
                },1000)
            }
        },
        created(){
            const that = this;
            this.$nextTick(() => {
                    this.scroll = new BScroll(this.$refs.wrapper,{       //初始化better-scroll
                        probeType:1,   //1 滾動(dòng)的時(shí)候會(huì)派發(fā)scroll事件,會(huì)截流拇勃。2滾動(dòng)的時(shí)候?qū)崟r(shí)派發(fā)scroll事件四苇,不會(huì)截流。 3除了實(shí)時(shí)派發(fā)scroll事件方咆,在swipe的情況下仍然能實(shí)時(shí)派發(fā)scroll事件
                        click: true   //是否派發(fā)click事件
                    })
                    // 滑動(dòng)過(guò)程中事件
                    this.scroll.on('scroll',(pos)=>{
                        if(pos.y > 30){
                            this.pulldownMsg = '釋放立即刷新'
                        }
                    });
                    //滑動(dòng)結(jié)束松開(kāi)事件
                    this.scroll.on('touchEnd',(pos) =>{  //上拉刷新
                        if(pos.y > 30){
                            setTimeout(()=>{
                                that.getData().then((res)=>{
                                    //刷新數(shù)據(jù)
                                    that.data = res;
                                    //恢復(fù)刷新提示文本值
                                    that.pulldownMsg = '下拉刷新'
                                    //刷新成功后提示
                                    that.refreshalert();
                                    //刷新列表后月腋,重新計(jì)算滾動(dòng)區(qū)域高度
                                    that.scroll.refresh();
                                })
                            },2000)
                        } 
                        else if(pos.y<(this.scroll.maxScrollY - 30)){   //下拉加載
                            this.pullupMsg = '加載中。瓣赂。榆骚。';
                            setTimeout(()=>{
                                that.getData().then((res)=>{
                                    //恢復(fù)文本值
                                    that.pullupMsg = '加載更多';
                                    that.data = this.data.concat(res);
                                    that.scroll.refresh();
                                })
                            },2000)
                            
                        }
                    })      
            })
        }
    }
</script>
//css
    .wrapper{
        width: 100%;
        height: 300px;
        background: #ccc;
        overflow: hidden;
        position: relative;
    }

    li{
        line-height: 50px;
        border-bottom: 1px solid #ccc;
        text-align: center;
    }

    /* 下拉、上拉提示信息 */
    .top-tip{
        position: absolute;  
        top: -40px;  
        left: 0;
        z-index: 1;  
        width: 100%;  
        height:40px;  
        line-height:40px;  
        text-align:center;
        color: #555;
    } 
      
    .bottom-tip{
        width: 100%;
        height: 35px;
        line-height: 35px;
        text-align: center;
        color: #777;
        background: #f2f2f2;
        position: absolute;
        bottom: -35px;
        left: 0;
    }


    /* 全局提示信息 */
    .alert-hook{
        display: none;
        position: fixed;
        top: 62px;
        left: 0;
        z-index: 2;
        width: 100%;
        height: 35px;
        line-height: 35px;
        text-align: center;
        color: #fff;
        font-size: 12px;
        background: rgba(7, 17, 27, 0.5);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煌集,一起剝皮案震驚了整個(gè)濱河市妓肢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苫纤,老刑警劉巖碉钠,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纲缓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡喊废,警方通過(guò)查閱死者的電腦和手機(jī)祝高,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)污筷,“玉大人工闺,你說(shuō)我怎么就攤上這事⊥切迹” “怎么了斤寂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)揪惦。 經(jīng)常有香客問(wèn)我遍搞,道長(zhǎng),這世上最難降的妖魔是什么器腋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任溪猿,我火速辦了婚禮,結(jié)果婚禮上纫塌,老公的妹妹穿的比我還像新娘诊县。我一直安慰自己,他們只是感情好措左,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布依痊。 她就那樣靜靜地躺著,像睡著了一般怎披。 火紅的嫁衣襯著肌膚如雪胸嘁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天凉逛,我揣著相機(jī)與錄音性宏,去河邊找鬼。 笑死状飞,一個(gè)胖子當(dāng)著我的面吹牛毫胜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诬辈,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酵使,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了自晰?” 一聲冷哼從身側(cè)響起凝化,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酬荞,沒(méi)想到半個(gè)月后搓劫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞧哟,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年枪向,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勤揩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秘蛔,死狀恐怖陨亡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情深员,我是刑警寧澤负蠕,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站倦畅,受9級(jí)特大地震影響遮糖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叠赐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一欲账、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芭概,春花似錦赛不、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惹苗,卻和暖如春畴椰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸽粉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抓艳,地道東北人触机。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像玷或,于是被迫代替她去往敵國(guó)和親儡首。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 用到的組件 1偏友、通過(guò)CocoaPods安裝 2蔬胯、第三方類(lèi)庫(kù)安裝 3、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,613評(píng)論 1 180
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)位他、插件氛濒、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,093評(píng)論 4 62
  • 楊貴云焦點(diǎn)43期堅(jiān)持原創(chuàng)分享第147天平頂山 今天一直在下雪产场,白雪皚皚,銀裝素裹舞竿,很多年沒(méi)有這么好的景色了京景。大雪雖...
    舒靜心閱讀 164評(píng)論 0 0
  • 形成原因一:懷孕期間產(chǎn)生妊娠斑 女性在懷孕3-5個(gè)月時(shí)容易出現(xiàn)黃褐斑确徙,所以又常常被稱作“妊娠斑”。妊娠期間执桌,促黑素...
    帥奇老師閱讀 459評(píng)論 1 0