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

資訊專欄INFORMATION COLUMN

移動(dòng)端觸摸滑動(dòng)縱向圖片滾動(dòng)小插件~

ernest.wang / 1684人閱讀

摘要:老規(guī)矩上,過過癮先縱向圖片滾動(dòng)不過這個(gè)需要你在手機(jī)中查看啦再上源碼縱向滾動(dòng)圖片很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可觸摸滑動(dòng)的列表,可以自定義滑動(dòng)回調(diào)函數(shù)。

老規(guī)矩~ 上DEMO,過過癮先:縱向圖片滾動(dòng)(不過這個(gè)demo需要你在手機(jī)中查看啦~)

再上源碼:縱向滾動(dòng)圖片

DEMO很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可觸摸滑動(dòng)的列表,可以自定義滑動(dòng)回調(diào)函數(shù)。

一. 先說原理

首先圖片肯定是縱向排列的了

就像下邊這張圖一樣

灰色方塊就是一堆縱向排列的圖片

紅色方框中的是顯示區(qū)域,溢出隱藏

然后在動(dòng)態(tài)改變方框內(nèi)部的div的top值來切換顯示在方框中的不同圖片~

二. 碼代碼

首先初始化容器高度,以及添加縱向的控制條

    LONG_DISTANCE = nelsonVS.minHeight / 2;
    for(var i = 0 ; i < nelsonVS.lis.length ; i++){
        nelsonVS.lis[i].style.height = nelsonVS.minHeight + "px";
    }
    nelsonVS.ul.style.height = nelsonVS.num * nelsonVS.minHeight + "px";
    var prograssBarDom = document.createElement("ul");
    prograssBarDom.className = "prograssBar";
    var fragment = document.createDocumentFragment();
    for(var i = 0,linode = "" ; i < nelsonVS.num ; i ++){
        linode = document.createElement("li");
        linode.className = "prograssBarItem" + (i==0?" active":"");
        fragment.appendChild(linode);
    }
    prograssBarDom.appendChild(fragment);
       nelsonVS.dom.appendChild(prograssBarDom);
       nelsonVS.prograssBar = prograssBarDom.children;
       prograssBarDom = null;fragment = null;
       this.slide();
       return this;
   }

然后,綁定滾動(dòng)的事件

綁定touchstart記錄手指開始觸摸的位置

綁定touchmove實(shí)時(shí)更新手指觸摸點(diǎn)位于屏幕的位置,并使圖片容器隨著手指滾動(dòng)

綁定touchend更新手指離開時(shí)候的位置,并根據(jù)位置來判斷是是將圖片歸位不進(jìn)行滾動(dòng),還是滾動(dòng)到下一張/上一張圖片(觸發(fā)臨界值可自行設(shè)定)

var STARTY,ENDY,EVENT_TYPE,START_POS,that = this,TIMESTAMP,TIMESTAMP_END;
    nelsonVS.dom.addEventListener("touchstart",function(e){
        e.preventDefault();
        TIMESTAMP = (new Date()).valueOf();
        START_POS = nelsonVS.ul.offsetTop;
        STARTY = e.touches[0].clientY;
        if(that.moveInterval){
            clearInterval(that.moveInterval);
        }
    })
    nelsonVS.dom.addEventListener("touchmove",function(e){
        e.preventDefault();
        ENDY = e.targetTouches[0].clientY;
        nelsonVS.ul.style.top = START_POS + ENDY - STARTY + "px";
    })
    nelsonVS.dom.addEventListener("touchend",function(e){
        e.preventDefault();
        TIMESTAMP_END = (new Date()).valueOf();
        var DIS = ENDY - STARTY;
        if(DIS > DISTANCE){
            EVENT_TYPE = "DOWN";
        }else if(DIS < -DISTANCE){
            EVENT_TYPE = "UP";
        }
        if(Math.abs(DIS) > DISTANCE){
            if(TIMESTAMP_END - TIMESTAMP < SENSIBILITY){
                that.checkAction(EVENT_TYPE);
            }else{
                if(Math.abs(DIS) > LONG_DISTANCE){
                    that.checkAction(EVENT_TYPE);
                }else{
                    that.action(EVENT_TYPE);
                }
            }
        }else{
            that.action();
        }
    })

檢測(cè)滑動(dòng)方向以及臨界值判斷

if((et == "UP" && (nelsonVS.index - 1) <= -nelsonVS.num) || (et == "DOWN" && (nelsonVS.index + 1) > 0)){
    this.action();
        return;
    }
    switch(et){
        case "UP":
            nelsonVS.isSliding = true;
            nelsonVS.index--;
            this.action(et);
            break;
        case "DOWN":
            nelsonVS.index++;
            nelsonVS.isSliding = true;
            this.action(et);
            break;
        default:
            this.action();
    }
}

進(jìn)行滾動(dòng)處理

var AIM_POS = nelsonVS.minHeight * nelsonVS.index;
var DIS = AIM_POS - nelsonVS.ul.offsetTop;        var speed = (DIS) / 3;
var that = this;
that.moveInterval = setInterval(function(){
    nelsonVS.ul.style.top = nelsonVS.ul.offsetTop + speed + "px";
    if(Math.abs(AIM_POS - nelsonVS.ul.offsetTop) < speed || Math.abs(speed) <= 0.5){
        nelsonVS.ul.style.top = AIM_POS + "px";
        speed = (DIS) / 3;
        if(et){
            var para = {};
            para.index = -nelsonVS.index;
            para.item = nelsonVS.lis[para.index];
            if(that.onSlideCallBack){
                that.onSlideCallBack(para);
                if(that.onSlideUpCallBack||that.onSlideDownCallBack){
                    console.error("在設(shè)置滾動(dòng)回調(diào)的時(shí)候不可同時(shí)設(shè)置單向滾動(dòng)回調(diào)")
                }
            }else{
                if(that.onSlideUpCallBack && et == "UP"){
                    that.onSlideUpCallBack(para);
                }
                if(that.onSlideDownCallBack && et == "DOWN"){
                    that.onSlideDownCallBack(para);
                }
            }
        }
        that.changePrograssBar();
        clearInterval(that.moveInterval);
        nelsonVS.isSliding = false;
    }else{
        speed = (AIM_POS - nelsonVS.ul.offsetTop) / 5;
    }
},10)

更新控制條的當(dāng)前索引值位置

for(var i = 0 ; i < nelsonVS.prograssBar.length ; i++){
    if(nelsonVS.prograssBar[i].classList.contains("active")){
                nelsonVS.prograssBar[i].classList.remove("active");
        break;
    }
}
nelsonVS.prograssBar[-nelsonVS.index].classList.add("active");

其他就是一些回調(diào)函數(shù)啦~

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

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

相關(guān)文章

  • 移動(dòng)觸摸滑動(dòng)縱向圖片滾動(dòng)插件~

    摘要:老規(guī)矩上,過過癮先縱向圖片滾動(dòng)不過這個(gè)需要你在手機(jī)中查看啦再上源碼縱向滾動(dòng)圖片很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可觸摸滑動(dòng)的列表,可以自定義滑動(dòng)回調(diào)函數(shù)。 老規(guī)矩~ 上DEMO,過過癮先:縱向圖片滾動(dòng)(不過這個(gè)demo需要你在手機(jī)中查看啦~) 再上源碼:縱向滾動(dòng)圖片 DEMO很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可...

    hufeng 評(píng)論0 收藏0
  • 移動(dòng)觸摸滑動(dòng)縱向圖片滾動(dòng)插件~

    摘要:老規(guī)矩上,過過癮先縱向圖片滾動(dòng)不過這個(gè)需要你在手機(jī)中查看啦再上源碼縱向滾動(dòng)圖片很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可觸摸滑動(dòng)的列表,可以自定義滑動(dòng)回調(diào)函數(shù)。 老規(guī)矩~ 上DEMO,過過癮先:縱向圖片滾動(dòng)(不過這個(gè)demo需要你在手機(jī)中查看啦~) 再上源碼:縱向滾動(dòng)圖片 DEMO很簡(jiǎn)單,左側(cè)有個(gè)縱向的圖片數(shù)量以及當(dāng)前圖片索引的展示,然后整個(gè)是一個(gè)縱向可...

    miguel.jiang 評(píng)論0 收藏0
  • JS移動(dòng)客戶--觸屏滑動(dòng)事件及js手機(jī)拖拽效果

    摘要:移動(dòng)端觸屏滑動(dòng)的效果其實(shí)就是圖片輪播,在的頁面上很好實(shí)現(xiàn),綁定和等事件來完成。處理事件能跟蹤到屏幕滑動(dòng)的每根手指。禁止?jié)L動(dòng)是阻止默認(rèn)行為,事件的默認(rèn)行為就是滾動(dòng)。可惜在此玩了一個(gè)小時(shí)也沒有看見一列火車經(jīng)過,只好繼續(xù)趕往東烏旗。 移動(dòng)端觸屏滑動(dòng)的效果其實(shí)就是圖片輪播,在PC的頁面上很好實(shí)現(xiàn),綁定click和mouseover等事件來完成。但是在移動(dòng)設(shè)備上,要實(shí)現(xiàn)這種輪播的效果,就需要用到...

    joyqi 評(píng)論0 收藏0
  • vue輪播圖插件之vue-awesome-swiper

    摘要:移動(dòng)端輪播圖插件,在使用圖形界面插件中的組件無法實(shí)現(xiàn)觸摸滑動(dòng)后,轉(zhuǎn)而使用插件安裝我這里安裝的是下面的這個(gè)版本使用全局導(dǎo)入樣式的話,我這里有用到分頁器,就在全局中引入了樣式組件引入在中使用常見的小圓點(diǎn) 移動(dòng)端輪播圖插件,在使用iview圖形界面插件中的carousel組件無法實(shí)現(xiàn)觸摸滑動(dòng)后,轉(zhuǎn)而使用vue-awesome-swiper插件 1.npm安裝 npm i vue-awesom...

    binta 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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