溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信小程序MUI側(cè)滑導(dǎo)航菜單示例(Popup彈出式,左側(cè)滑動(dòng),右側(cè)不動(dòng))

發(fā)布時(shí)間:2020-08-26 07:27:56 來源:腳本之家 閱讀:304 作者:Rattenking 欄目:web開發(fā)

本文實(shí)例講述了微信小程序MUI側(cè)滑導(dǎo)航菜單。分享給大家供大家參考,具體如下:

實(shí)現(xiàn)的目標(biāo)MUI的off canvas效果

點(diǎn)擊列表 —- 右側(cè)展示頁(yè)面不動(dòng),左側(cè)導(dǎo)航滑動(dòng) —- 點(diǎn)擊右側(cè)遮罩層或者左側(cè)選項(xiàng) —- 左側(cè)還原,右側(cè)去掉遮罩層

實(shí)現(xiàn)方案2:左右分上下兩層,左側(cè)滑動(dòng),右側(cè)不動(dòng)

 微信小程序MUI側(cè)滑導(dǎo)航菜單示例(Popup彈出式,左側(cè)滑動(dòng),右側(cè)不動(dòng))

WXML

<view class="page">
 <view class="page-top {{open ? 'page-top-show' : ''}}">
  <view class="nav-list" wx:for-items="{{nav_list}}" bindtap="open_list" data-title="{{item}}">
   <text>{{item}}</text>
  </view>
 </view>
 <view class="page-bottom">
  <image class="off-nav-list" bindtap="off_canvas" src="../../images/btn.png"></image>
  <view class="page-bottom-content">
   <text>{{text}}</text>
  </view>
  <view class="page-mask {{open ? '' : 'page-mask-hide'}}" bindtap="off_canvas"></view>
 </view>
</view>

WXSS

page,.page {
 height: 100%;
 font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'Droid Sans Fallback', 'Microsoft Yahei', sans-serif;
}
/*左側(cè)導(dǎo)航 */
.page-top{
 position: fixed;
 width: 75%;
 height: 100%;
 top: 0;
 left: 0;
 background-color: rgb(0, 68, 97);
 transform: rotate(0deg) scale(1) translate(-100%,0%);
 -webkit-transform: rotate(0deg) scale(1) translate(-100%,0%);
 transition: all 0.4s ease;
 z-index: 998;
}
.page-top-show{
 transform: rotate(0deg) scale(1) translate(0%,0%);
 -webkit-transform: rotate(0deg) scale(1) translate(0%,0%);
}
.nav-list{
 padding: 30rpx 0 30rpx 40rpx;
 color:#fff;
}
/*右側(cè)展示 */
.page-bottom{
 height: 100%;
 background-color: rgb(57, 125, 230);
 position: relative;
}
.off-nav-list{
 position: fixed;
 width: 60rpx;
 height: 50rpx;
 top: 20rpx;
 left:20rpx;
}
.page-bottom-content{
 padding:100rpx 20rpx 30rpx;
 color: #fff;
}
.page-mask{
 width: 100%;
 height: 100%;
 background-color:rgba(0,0,0,0.5);
 position: absolute;
 top: 0;
 left: 0;
 z-index: 10;
}
.page-mask-hide{
 display: none;
}

JS

var app = getApp();
var data = require('../../utils/data.js');
Page({
 /**
  * 頁(yè)面的初始數(shù)據(jù)
  */
 data: {
  text: 'ES6學(xué)習(xí)之路',
  nav_list: ['ES6學(xué)習(xí)之路', 'CSS特效', 'VUE實(shí)戰(zhàn)','微信小程序'],
  open: false
 },
 //列表的操作函數(shù)
 open_list: function(opts){
  this.setData({ text: opts.currentTarget.dataset.title,open: false});
 },
 //左側(cè)導(dǎo)航的開關(guān)函數(shù)
 off_canvas: function(){
  this.data.open ? this.setData({open: false}) :this.setData({open: true});
 }
})

總結(jié):

1. 代碼簡(jiǎn)化:off_canvas函數(shù)簡(jiǎn)化代碼,采用三目表達(dá)式,簡(jiǎn)單切清晰;

2. 渲染:注意對(duì)data對(duì)象中屬性進(jìn)行賦值時(shí),要采用this.setData()方法,否則屬性改變不會(huì)重新渲染(eg:this.data.text = opts.currentTarget.dataset.title;)這樣text的值改變,頁(yè)面不會(huì)重新渲染text;

3. 代碼簡(jiǎn)化:this.data.open ? this.setData({open: false}) :this.setData({open: true});簡(jiǎn)化為this.setData({ open: this.data.open ? false : true});

希望本文所述對(duì)大家微信小程序開發(fā)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI