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

資訊專欄INFORMATION COLUMN

avalon js單頁(yè)面滑動(dòng)切換

zhisheng / 3194人閱讀

摘要:觸摸事件在這里的作用是演示滑動(dòng)可能產(chǎn)生的效果,最終決定哪一頁(yè)是當(dāng)前頁(yè)的是滑動(dòng)事件。在這里觸摸事件移動(dòng)的距離達(dá)到一定值時(shí)前面事件回調(diào)已經(jīng)過濾了不符合要求的事件,就會(huì)觸發(fā)滑動(dòng)事件。

效果

chrome模擬器

真機(jī)
http://v.youku.com/v_show/id_XMTM2MjExNTM5Ng==.html

布局 tab部分
  • TAB 1
  • ...
@page_num:3;//頁(yè)面數(shù)
@page_width:360px;//每一頁(yè)的寬度

#tab{
    position: relative;
    ul{
        display: flex;
        align-items: flex-start;
        flex-flow: row wrap;
        justify-content: space-around;
    }
    li{
        display: block;
        width:(100-8*@page_num)/@page_num*1%;
        text-align: center;
        color: #333;
        padding:10px 4%;
        font-size: 1.5em;
    }
    .cur{
        color:#bc232c;
    }
    #cursor{
        bottom:0;
        width:1/@page_num*100%;
        position: absolute;
        border-bottom:5px solid #bc232c;
        color: #bc232c;
    }
}

切換卡用flex-box,每個(gè)切換卡的寬度用百分比,(100-頁(yè)面數(shù)*2*切換卡padding)/頁(yè)面數(shù)*100%.

游標(biāo)#cursor用absolute,相對(duì)于整個(gè)tab定位,left也用百分比表示,后面滑動(dòng)時(shí)動(dòng)態(tài)改變left.其寬度=(100/頁(yè)面數(shù))%.

內(nèi)容部分
  • page 1
  • ...
#content{
    width: @page_width*@page_num;
    li{
        font-size: 30px;
        vertical-align: top;
        width: 1/@page_num*100%;
        display: inline-block;
    }
}

#content ul相對(duì)于"遮罩",通過改變它的transform調(diào)整后面內(nèi)容的可見部分。

觸摸事件
  • TAB {{$index+1}}
  • page {{$index+1}}
var start,offset,page_width=320,page_num=3,cursor_step=1/page_num*100;
var slide_switch=avalon.define({
    $id:"slide_switch",
    cur:0,//當(dāng)前頁(yè)
    heights:[],
    offset:0,//頁(yè)面偏移
    cursor_pos:0,//tab游標(biāo)偏移
    ...
});

需要對(duì)每一頁(yè)設(shè)定高度:當(dāng)前頁(yè)的高度是它自己本身的高度,其它頁(yè)的高度不能大于當(dāng)前頁(yè)的高度,防止?jié)L動(dòng)條與當(dāng)前頁(yè)不對(duì)應(yīng)。
比如當(dāng)前頁(yè)是第一頁(yè)(最左邊),高度為[500,700,800],即高度都是它們本身的高度。


這時(shí),滾動(dòng)條是和最高的頁(yè)(第三頁(yè))對(duì)應(yīng)的。
事實(shí)上,天貓的h5商品詳情頁(yè)面就是這樣做的。
這里因?yàn)榍袚Q時(shí)沒有異步加載數(shù)據(jù),本屌就沒在切換后重新設(shè)定高度。

觸摸事件在這里的作用是演示滑動(dòng)可能產(chǎn)生的效果,最終決定哪一頁(yè)是當(dāng)前頁(yè)的是滑動(dòng)事件。

touchstart
  • page {{$index+1}}
  • ...
    start:function(e){
        start=e.touches[0].clientX;
    }
    ...

    start保存觸摸的初始點(diǎn)。

    touchmove
  • page {{$index+1}}
  • ...
    move:function(e){
        offset=e.touches[0].clientX-start;//當(dāng)前觸摸的位置到初始點(diǎn)的位移
        slide_switch.offset=page_width*slide_switch.cur-offset;//更新頁(yè)面可見區(qū)域
        //更新tab游標(biāo)位置
        slide_switch.cursor_pos=cursor_step*slide_switch.cur-offset/(page_width*page_num)*100;
    }
    ...
    touchend
  • page {{$index+1}}
  • ...
    end:function(e){
        //頁(yè)面當(dāng)前狀態(tài)是第一頁(yè)的左邊或最后一頁(yè)的右邊或左右相鄰頁(yè)未露出一半
        if(slide_switch.offset<0||slide_switch.offset>page_width*(page_num-1)||
        Math.abs(offset)
    滑動(dòng)事件
    

    關(guān)于移動(dòng)端的click事件,參見也來說說touch事件與點(diǎn)擊穿透問題.
    avalon.mobile對(duì)移動(dòng)端的處理是:

    touchstart->touchmove->touchend

    如果touchmove的距離不夠(過短),觸發(fā)模擬出來的tap事件.具體的
    半天沒松開=>longtab(長(zhǎng)按事件)

    規(guī)定事件內(nèi)又觸發(fā)tap事件=>doubletap(雙擊事件)
    其他=>tap

    如果touchmove達(dá)到一定距離,觸發(fā)swipe(滑動(dòng))事件。

    在這里觸摸事件移動(dòng)的距離達(dá)到一定值時(shí)(前面touchend事件回調(diào)已經(jīng)過濾了不符合要求的事件),就會(huì)觸發(fā)滑動(dòng)事件。總的執(zhí)行順序:touchstart->touchmove->touchend->swipe.

  • page {{$index+1}}
  • ...
    turn:function(cur){
        slide_switch.cur=cur;
        slide_switch.offset=page_width*slide_switch.cur;
        slide_switch.cursor_pos=cursor_step*slide_switch.cur;
    }
    ...
    tab點(diǎn)擊
    ...
    
    • TAB {{$index+1}}
    ...
    定制

    less

    @page_num:3;
    @page_width:320px;

    js

    page_width=320,page_num=3

    下載

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

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

    相關(guān)文章

    • avalon 頁(yè)面程序 (種子工程)之二 按需加載和路由系統(tǒng)

      摘要:的成功離開不這三個(gè)東西,分層架構(gòu),路由系統(tǒng),儲(chǔ)存系統(tǒng)。分層架構(gòu)是我們組織復(fù)雜代碼的關(guān)鍵,路由系統(tǒng)是將多個(gè)頁(yè)面壓縮在一個(gè)頁(yè)面的關(guān)鍵。在這個(gè)種子工程中,我都調(diào)用了同一個(gè)方法,就比較適合目錄動(dòng)態(tài)生成,需要按需調(diào)用不同的頁(yè)面的情況。 SPA的成功離開不這三個(gè)東西,分層架構(gòu),路由系統(tǒng),儲(chǔ)存系統(tǒng)。分層架構(gòu)是我們組織復(fù)雜代碼的關(guān)鍵,路由系統(tǒng)是將多個(gè)頁(yè)面壓縮在一個(gè)頁(yè)面的關(guān)鍵。 其中avalon路由用到...

      fanux 評(píng)論0 收藏0
    • avalon 頁(yè)面程序 (種子工程)之一 用requirejs引入avalon

      摘要:現(xiàn)在微軟終于痛定思痛決定放棄了不支持的安全更新,對(duì)我們前端來說,真的是重大利好啊言歸正傳,這篇文章的目的就是把怎么用構(gòu)建一個(gè)單頁(yè)面程序介紹以下,是對(duì)自己的一個(gè)總結(jié),也喜歡對(duì)大家有一定的借鑒作用,寫的不好不對(duì)的地方希望大家多評(píng)論評(píng)論謝謝。 這篇文章是寫在公司項(xiàng)目結(jié)束之后的,因?yàn)槲覀€(gè)人不太會(huì)把沒有實(shí)踐過的東西寫出來,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)么,用的怎么樣,好不好用,在成熟實(shí)踐過的項(xiàng)目上能體...

      solocoder 評(píng)論0 收藏0
    • avalon2初體驗(yàn)

      摘要:最近因項(xiàng)目進(jìn)展需求對(duì)現(xiàn)有項(xiàng)目進(jìn)行重構(gòu),由于目前項(xiàng)目還未實(shí)現(xiàn)真正意義上的前后端分離后續(xù)會(huì)循序重構(gòu)實(shí)現(xiàn),在時(shí)間緊產(chǎn)品循序迭代的情況下,想一次性實(shí)現(xiàn)前后端分離精力實(shí)在有限主要是前端開發(fā)人力不足。 最近因項(xiàng)目進(jìn)展需求對(duì)現(xiàn)有項(xiàng)目進(jìn)行重構(gòu),由于目前項(xiàng)目還未實(shí)現(xiàn)真正意義上的前后端分離(后續(xù)會(huì)循序重構(gòu)實(shí)現(xiàn)),在時(shí)間緊產(chǎn)品循序迭代的情況下,想一次性實(shí)現(xiàn)前后端分離精力實(shí)在有限(主要是前端開發(fā)人力不足)。所...

      youkede 評(píng)論0 收藏0
    • 讓webpack2兼容IE8以下代碼

      摘要:可用編譯低版本代碼水有多深不得而知啟動(dòng)新技術(shù)提供測(cè)試框架進(jìn)行單元測(cè)試,代碼覆蓋率報(bào)告,可與和快速對(duì)接。頁(yè)面的其他資源文件,通過引入單元測(cè)試項(xiàng)目啟動(dòng)環(huán)境配置為了把保證項(xiàng)目正常運(yùn)行,請(qǐng)自行更新相關(guān)環(huán)境。 項(xiàng)目地址:https://github.com/sayll/ie-webpack-start ie-webpack-start showImg(https://segmentfault....

      StonePanda 評(píng)論0 收藏0
    • avalon 項(xiàng)目實(shí)踐記錄

      摘要:業(yè)務(wù)組件模塊化拆分復(fù)用后整體可維護(hù)性也得到了很大提升。先贊一個(gè)當(dāng)然凡事都有相對(duì)的一面,此篇文字就主要記錄自己在項(xiàng)目過程中的一些問題。 原文地址:http://mtmzorro.github.io/201... 項(xiàng)目背景 需要兼容到IE7(根據(jù)數(shù)據(jù)支撐重要說服拋棄IE6) 上個(gè)版本傳統(tǒng) jQuery DOM 開發(fā)模式,經(jīng)過無數(shù)手維護(hù)已經(jīng)慘不忍睹 核心業(yè)務(wù)流程,可維護(hù)性、健壯性要求高 主...

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

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

    0條評(píng)論

    閱讀需要支付1元查看
    <