- page 1 ...
摘要:觸摸事件在這里的作用是演示滑動(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 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... start:function(e){ start=e.touches[0].clientX; } ...
start保存觸摸的初始點(diǎn)。
touchmove... 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
... 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)擊
...
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
摘要:的成功離開不這三個(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路由用到...
摘要:現(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)目上能體...
摘要:最近因項(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ā)人力不足)。所...
摘要:可用編譯低版本代碼水有多深不得而知啟動(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....
摘要:業(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ù)性、健壯性要求高 主...
閱讀 3235·2021-11-23 09:51
閱讀 2480·2021-09-27 13:34
閱讀 2464·2021-09-08 09:45
閱讀 662·2019-08-30 15:44
閱讀 3493·2019-08-29 12:17
閱讀 2759·2019-08-26 12:18
閱讀 2622·2019-08-26 10:10
閱讀 3078·2019-08-23 18:02