微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)


Posted in Javascript onJanuary 23, 2019

本文实例讲述了微信小程序MUI侧滑导航菜单。分享给大家供大家参考,具体如下:

实现的目标MUI的off canvas效果

点击列表 —- 右侧展示页面不动,左侧导航滑动 —- 点击右侧遮罩层或者左侧选项 —- 左侧还原,右侧去掉遮罩层

实现方案2:左右分上下两层,左侧滑动,右侧不动

 微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)

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;
}
/*左侧导航 */
.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;
}
/*右侧展示 */
.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({
 /**
  * 页面的初始数据
  */
 data: {
  text: 'ES6学习之路',
  nav_list: ['ES6学习之路', 'CSS特效', 'VUE实战','微信小程序'],
  open: false
 },
 //列表的操作函数
 open_list: function(opts){
  this.setData({ text: opts.currentTarget.dataset.title,open: false});
 },
 //左侧导航的开关函数
 off_canvas: function(){
  this.data.open ? this.setData({open: false}) :this.setData({open: true});
 }
})

总结:

1. 代码简化:off_canvas函数简化代码,采用三目表达式,简单切清晰;

2. 渲染:注意对data对象中属性进行赋值时,要采用this.setData()方法,否则属性改变不会重新渲染(eg:this.data.text = opts.currentTarget.dataset.title;)这样text的值改变,页面不会重新渲染text;

3. 代码简化:this.data.open ? this.setData({open: false}) :this.setData({open: true});简化为this.setData({ open: this.data.open ? false : true});

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JavaScript中的isXX系列是否继续使用的分析
Apr 16 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 Javascript
创建自己的jquery表格插件
Nov 25 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 Javascript
详解如何使用微信小程序云函数发送短信验证码
Mar 13 Javascript
微信小程序生成分享海报方法(附带二维码生成)
Mar 29 Javascript
微信小程序vant弹窗组件的实现方式
Feb 21 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 #Javascript
vue车牌号校验和银行校验实战
Jan 23 #Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 #Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 #Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 #Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 #Javascript
javascript json字符串到json对象转义问题
Jan 22 #Javascript
You might like
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
js代码实现微博导航栏
2015/07/30 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
javascript 打印页面代码
2009/03/24 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
js创建对象的方式总结
2015/01/10 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
Python文件去除注释的方法
2015/05/25 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python ChainMap的使用和说明详解
2019/06/11 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
电气自动化个人求职信范文
2014/02/03 职场文书
读书演讲主持词
2014/03/18 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
C++程序员求职信范文
2014/04/14 职场文书
关于安全演讲稿
2014/05/09 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python