国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

下拉刷新,上拉加載插件mescroll源碼分析

ztyzz / 1733人閱讀

摘要:最近項(xiàng)目要求增加一個(gè)下拉刷新的功能,自己也試著寫了一個(gè),單總是有點(diǎn)卡頓。

最近項(xiàng)目要求增加一個(gè)下拉刷新的功能,自己也試著寫了一個(gè),單總是有點(diǎn)卡頓。 于是學(xué)習(xí)了下別人的插件(ps : 既然寫不出好插件,就要會(huì)學(xué)習(xí)別人的):

官網(wǎng)github地址:https://github.com/mescroll/m...

1.整體預(yù)發(fā)結(jié)構(gòu)
;(function(name, definition) {
// 檢測上下文環(huán)境是否為AMD或CMD
    
})("MeScroll", function() {//scroll的邏輯代碼
    
    //構(gòu)造函數(shù)
    var MeScroll = function(){
        //初始化下拉刷新
        me.initDownScroll();
        //初始化上拉加載,則初始化
        me.initUpScroll();

        //自動(dòng)加載
    }
    
    
    /*配置參數(shù):下拉刷新*/
    MeScroll.prototype.extendDownScroll = function(){}
    
    /*配置參數(shù):上拉加載*/
    MeScroll.prototype.extendUpScroll = function(){}
    
    /*配置參數(shù)*/
    MeScroll.extend = function(){}
    
    /*-------初始化下拉刷新-------*/
    MeScroll.prototype.initDownScroll = function(){}
    
    /*-------初始化上拉加載-------*/
    MeScroll.prototype.initUpScroll = function(){}
    
    
    
    //...其他函數(shù)掛在prototype的函數(shù),用于初始化時(shí)候調(diào)用或者暴露給客戶端定義;
    
    
    
})
2. 檢查環(huán)境
;(function(name, definition) {
// 檢測上下文環(huán)境是否為AMD或CMD
    var hasDefine = typeof define === "function",
    // 檢查上下文環(huán)境是否為Node
        hasExports = typeof module !== "undefined" && module.exports;

    if(hasDefine) {
        // AMD環(huán)境或CMD環(huán)境
        define(definition);
    } else if(hasExports) {
        // 定義為普通Node模塊
        module.exports = definition();
    } else {
        // 將模塊的執(zhí)行結(jié)果掛在window變量中,在瀏覽器中this指向window對象
        this[name] = definition();
    }
})("MeScroll", function() {//scroll的邏輯代碼})
3.檢查設(shè)備
var u = navigator.userAgent;
        var isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //是否為ios設(shè)備
        var isPC = typeof window.orientation == "undefined"; //是否為PC端
        var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1;; //是否為android端
4.對象合并方法
/*配置參數(shù)*/
    MeScroll.extend = function(userOption, defaultOption) {
        if(!userOption) return defaultOption;
        for(var key in defaultOption) {
            if(userOption[key] == null) {
                userOption[key] = defaultOption[key];
            } else if(typeof userOption[key] == "object") {
                MeScroll.extend(userOption[key], defaultOption[key]); //深度匹配
            }
        }
        return userOption;
    }
5.獲取手指的坐標(biāo)
/*根據(jù)點(diǎn)擊滑動(dòng)事件獲取第一個(gè)手指的坐標(biāo)*/
    MeScroll.prototype.getPoint = function(e) {
        return {
            x: e.touches ? e.touches[0].pageX : e.clientX,
            y: e.touches ? e.touches[0].pageY : e.clientY
        }
    }
6.判斷向上拉還是向下拉
var moveY = curPoint.y - me.startPoint.y; //和起點(diǎn)比,移動(dòng)的距離,大于0向下拉,小于0向上拉
7.和滾動(dòng)條有關(guān)的一些的方法
/*滾動(dòng)條的位置*/
    MeScroll.prototype.getScrollTop = function() {
        if(this.isScrollBody) {
            return document.documentElement.scrollTop || document.body.scrollTop;
        } else {
            return this.scrollDom.scrollTop;
        }
    }

    /*滾動(dòng)條到底部的距離:滾動(dòng)內(nèi)容的高度 - 滾動(dòng)容器的高度 - 滾動(dòng)條頂部的高度*/
    MeScroll.prototype.getToBottom = function() {
        return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop();
    }

    /*設(shè)置滾動(dòng)條的位置*/
    MeScroll.prototype.setScrollTop = function(y) {
        if(this.isScrollBody) {
            document.documentElement.scrollTop = y;
            document.body.scrollTop = y;
        } else {
            this.scrollDom.scrollTop = y;
        }
    }
8.初始化下拉刷新
//1.配置參數(shù)
me.optDown = me.options.down || {};
//具體參數(shù)配置
me.extendDownScroll(me.optDown);
//2.鼠標(biāo)或手指的按下事件
me.touchstartEvent = function(){}
me.scrollDom.addEventListener("mousedown", me.touchstartEvent); //PC端鼠標(biāo)事件
me.scrollDom.addEventListener("touchstart", me.touchstartEvent); //移動(dòng)端手指事件
        
//3.鼠標(biāo)或手指的滑動(dòng)事件
me.touchmoveEvent = function(){}
me.scrollDom.addEventListener("touchmove", me.touchmoveEvent); //移動(dòng)端手指事件

//4.鼠標(biāo)或手指的離開事件
me.touchendEvent = function(){}
me.scrollDom.addEventListener("mouseup", me.touchendEvent); //PC端鼠標(biāo)抬起事件
me.scrollDom.addEventListener("mouseleave", me.touchendEvent); //PC端鼠標(biāo)離開事件
me.scrollDom.addEventListener("touchend", me.touchendEvent); //移動(dòng)端手指事件
me.scrollDom.addEventListener("touchcancel", me.touchendEvent); //移動(dòng)端系統(tǒng)停止跟蹤觸摸

//5.在頁面中加入下拉布局
9.初始化上拉加載
//1.配置參數(shù)

//2.滾動(dòng)監(jiān)聽
me.scrollEvent = function() {}
if(me.isScrollBody) {
    window.addEventListener("scroll", me.scrollEvent);
} else {
    me.scrollDom.addEventListener("scroll", me.scrollEvent);
}
10.css相關(guān)
/*啟用硬件加速:使動(dòng)畫渲染流暢,解決部分手機(jī)閃白屏問題,在下拉刷新和上拉加載觸發(fā)時(shí)啟用,結(jié)束后移除,避免濫用導(dǎo)致其他兼容性問題*/
.mescroll-hardware {
    -webkit-transform: translateZ(0);
    -webkit-transform-style: preserve-3d;
    -webkit-backface-visibility: hidden;
    -webkit-perspective: 1000;
}
11.注冊為vue插件

具體注冊插件方法可以參考vue插件文檔:
https://cn.vuejs.org/v2/guide...

MeScroll.install = function(Vue,options){
    Vue.component("MeScroll",{
        template:"",
        data: ,
        props: ,
        mounted: ,
        methods:{},
        //...
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/52735.html

相關(guān)文章

  • 下拉刷新拉加插件mescroll源碼分析

    摘要:最近項(xiàng)目要求增加一個(gè)下拉刷新的功能,自己也試著寫了一個(gè),單總是有點(diǎn)卡頓。 最近項(xiàng)目要求增加一個(gè)下拉刷新的功能,自己也試著寫了一個(gè),單總是有點(diǎn)卡頓。 于是學(xué)習(xí)了下別人的插件(ps : 既然寫不出好插件,就要會(huì)學(xué)習(xí)別人的): 官網(wǎng)github地址:https://github.com/mescroll/m... 1.整體預(yù)發(fā)結(jié)構(gòu) ;(function(name, definition) {...

    frontoldman 評論0 收藏0
  • 實(shí)現(xiàn)移動(dòng)端拉加下拉刷新的vue插件(mescroll.js)

    摘要:做一個(gè)簡單的移動(dòng)端展示項(xiàng)目,后臺(tái)分頁后前端加載,實(shí)現(xiàn)上拉加載下一頁,找了下,還是用這個(gè)插件好一點(diǎn)安裝不要使用安裝導(dǎo)入在哪個(gè)頁面使用則在哪個(gè)頁面導(dǎo)入這里的話,我使用全局導(dǎo)入會(huì)出現(xiàn)問題若有錯(cuò)還請大家指出暫時(shí)想到的就是局部引入注冊組件注冊組件 做一個(gè)簡單的移動(dòng)端展示項(xiàng)目,后臺(tái)分頁后前端加載,實(shí)現(xiàn)上拉加載下一頁,找了下,還是用這個(gè)mescroll.js插件好一點(diǎn) 1.npm安裝 npm ins...

    hightopo 評論0 收藏0
  • 下拉刷新拉加 的基礎(chǔ)款(基本實(shí)現(xiàn))

    摘要:前言現(xiàn)在網(wǎng)上下拉刷新,上拉加載插件一搜一大堆,如果你想用在生產(chǎn)環(huán)境,那你可以直接網(wǎng)上搜一個(gè)靠譜的,我所做的就是不依賴任何插件,一步一步把這個(gè)插件的過程寫一下,各位同學(xué)可以在此基礎(chǔ)上定制,沒有寫過插件的,可以了解下插件怎么寫的,整個(gè)過程定位入 前言 現(xiàn)在網(wǎng)上 下拉刷新,上拉加載 插件一搜一大堆,如果你想用在生產(chǎn)環(huán)境,那你可以直接網(wǎng)上搜一個(gè)靠譜的,我所做的就是不依賴任何插件,一步一步把這個(gè)...

    DrizzleX 評論0 收藏0
  • 下拉刷新拉加 的基礎(chǔ)款(基本實(shí)現(xiàn))

    摘要:前言現(xiàn)在網(wǎng)上下拉刷新,上拉加載插件一搜一大堆,如果你想用在生產(chǎn)環(huán)境,那你可以直接網(wǎng)上搜一個(gè)靠譜的,我所做的就是不依賴任何插件,一步一步把這個(gè)插件的過程寫一下,各位同學(xué)可以在此基礎(chǔ)上定制,沒有寫過插件的,可以了解下插件怎么寫的,整個(gè)過程定位入 前言 現(xiàn)在網(wǎng)上 下拉刷新,上拉加載 插件一搜一大堆,如果你想用在生產(chǎn)環(huán)境,那你可以直接網(wǎng)上搜一個(gè)靠譜的,我所做的就是不依賴任何插件,一步一步把這個(gè)...

    Cciradih 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<