




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第小程序原生實(shí)現(xiàn)左滑抽屜菜單varpageX=(e.touches[0]||e.changedTouches[0]).pageX;
varoffset=pageX-startmark;
vardrawerComp=ins.selectComponent('.drawer');
vardrawerWidth=drawerComp.getDataset().drawerwidth;
if(offset0status==0){
setCompTransX(drawerComp,Math.min(drawerWidth,offset))
}elseif(offset0status==1){
setCompTransX(drawerComp,Math.max(0,offset))
functiontouchEnd(e,ins){
varpageX=(e.touches[0]||e.changedTouches[0]).pageX;
varoffset=pageX-startmark;
vardrawerComp=ins.selectComponent('.drawer');
vardrawerWidth=drawerComp.getDataset().drawerwidth;
if(offset0status==0){
if(offsetdrawerWidth*JUDGEPOINT){
setCompTransX(drawerComp,0);
}else{
setCompTransX(drawerComp,drawerWidth);
status=1;
}elseif(offset0){
setCompTransX(drawerComp,0);
status=0;
functionsetCompTransX(comp,x){
comp.setStyle({
transform:'translateX('+x+'px)',
module.exports={
touchstart:touchStart,
touchmove:touchMove,
touchend:touchEnd
}
遮罩層
點(diǎn)擊文首或文末鏈接在小程序開發(fā)工具中查看完整代碼。
遮罩層只需要在菜單和主容器之間增加一個view即可:
view/view
viewdata-maxopacity="0.6"/view
viewdata-drawerwidth="150"/view
樣式中很重要的是這個pointer-events屬性,設(shè)置為none之后點(diǎn)擊動作會穿透這個view達(dá)到下層。因?yàn)檎谡謱硬幌癯閷鲜翘幵诋嬅嬉酝獾?,它雖然透明度為0,但實(shí)際上一直覆蓋在.main上方,如果不加這個屬性,所有對.main的點(diǎn)擊操作都會點(diǎn)到.mask上面,那不管是滑動還是其他按鈕都無效了。
.mask{
height:100vh;
width:100%;
position:fixed;
transition:opacity0.4sease;
opacity:0;
pointer-events:none;
background-color:#548CA8;
wxs腳本也基本完全一致,只需要以相似的方法獲取到.mask的實(shí)例以及dataset中的透明度參數(shù),并在設(shè)置位移屬性的同時設(shè)置遮罩層的透明度屬性即可。
functionsetDrawer(x){
setCompTransX(drawerComp,x);
maskComp.setStyle({
opacity:x/drawerWidth*maskOpacity,
方案B
點(diǎn)擊文首或文末鏈接在小程序開發(fā)工具中查看完整代碼。
方案B與方案A的區(qū)別主要在于滑動時是主界面向右移動露出下層的菜單,其余各部分實(shí)現(xiàn)并無不同。這里只貼出主要差異的部分。
因?yàn)橐苿拥氖?main元素,因此把寬度配置數(shù)據(jù)放到了該元素的標(biāo)簽中,這樣可以少獲取一個組件實(shí)例。
view/view
view
data-drawerwidth="150"
bindtouchstart="{{drawer.touchstart}}"
bindtouchmove="{{drawer.touchmove}}"
bindtouchend="{{drawer.touchend}}"
/view
transition動畫屬性也放在.main中,.drawer的偏移不需要了。
.main{
height:100vh;
width:100%;
position:absolute;
transition:transform0.4sease;
.drawer{
height:100vh;
width:150px;
position:absolute;
wxs腳本中除了獲取的組件不同外,連設(shè)置位移都不需要改。
functiontouchMove(e,ins){
varpageX=(e.touches[0]||e.changedTouches[0]).pageX;
varoffset=pageX-startmark;
varmainComp=ins.selectComponent('.main');
vardrawerWidth=mainComp.getDataset().drawerwidth;
if(offset0status==0){
setCompTransX(mainComp,Math.min(drawerWidth,offset))
}elseif(offset0status==1){
setCompTransX(mainComp,Math.max(0,offset))
為什么要使用WXS
小程序在很多地方與web開發(fā)很像,但底層存在一些區(qū)別。網(wǎng)頁中,渲染和腳本執(zhí)行在同一個線程中執(zhí)行(因此執(zhí)行腳本可能會導(dǎo)致頁面整個卡死);小程序在不同的線程中分別運(yùn)行邏輯層(JS腳本)和渲染層(WXML和WXSS),線程間經(jīng)由客戶端(Native)進(jìn)行通信。
因此,如果使用JS腳本響應(yīng)事件,每次觸發(fā)touchmove都會產(chǎn)生兩次進(jìn)程間通信(下圖左所示),通信開銷較大;同時“setData渲染也會阻塞其它腳本執(zhí)行”(文檔這么說的,我也不知道為什么)。由于一次手勢會觸發(fā)巨量的touchmove事件,上述原因會造成動畫的卡頓。
而WXS函數(shù)運(yùn)行在視圖層,不存在上述問題(下圖右所示)。
結(jié)語參考資料
以上就是原生小程序的幾種抽屜菜單實(shí)現(xiàn)方法,希望對你有所幫助;對于文中存在的疏漏歡迎討論指正。
點(diǎn)擊鏈接可以在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 垃圾發(fā)電廠爐渣擴(kuò)建項(xiàng)目建議書(模板范文)
- 跨境金融保障的具體執(zhí)行方案
- 交通噪聲屏障工程實(shí)施方案
- 供水管網(wǎng)老舊設(shè)施更換工程可行性研究報告(范文參考)
- 工業(yè)園區(qū)水環(huán)境綜合整治項(xiàng)目建議書(模板范文)
- 手抄報設(shè)計教學(xué)
- 室內(nèi)設(shè)計原理講解
- 鄭州經(jīng)貿(mào)學(xué)院《高層建筑設(shè)計專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東南方職業(yè)學(xué)院《體育市場營銷與策劃》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安翻譯學(xué)院《外匯實(shí)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新鄉(xiāng)市欣豐瑞拓天然資源有限公司 現(xiàn)代化環(huán)保型骨料生產(chǎn)線項(xiàng)目環(huán)境影響報告
- 小區(qū)業(yè)委會工作情況匯報及下一步工作計劃
- 個人借條電子版模板
- 2023年廣東省中考物理試卷分析
- 團(tuán)體體檢報告格式模板范文
- 成人經(jīng)鼻胃管喂養(yǎng)臨床實(shí)踐指南
- 過程控制實(shí)驗(yàn)指導(dǎo)書講解
- 安徽鋼結(jié)構(gòu)人行天橋施工方案
- 形勢與政策(吉林大學(xué))智慧樹知到答案章節(jié)測試2023年
- 《表觀遺傳》教學(xué)設(shè)計
- 黎民公共管理學(xué)考研筆記
評論
0/150
提交評論