微信小程序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 相关文章推荐
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
JavaScript中setAttribute用法介绍
Jul 20 Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
Mar 03 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
JavaScript插入排序算法原理与实现方法示例
Aug 06 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
原生js+canvas实现验证码
Nov 29 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
popdiv
2006/07/14 Javascript
newxtree.js代码
2007/03/13 Javascript
js模拟类继承小例子
2010/07/17 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
利用Psyco提升Python运行速度
2014/12/24 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
python中使用序列的方法
2015/08/03 Python
python回调函数中使用多线程的方法
2017/12/25 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
Python中按键来获取指定的值
2019/03/02 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Django中modelform组件实例用法总结
2020/02/10 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
J2EE是技术还是平台还是框架
2016/08/14 面试题
物理教师自荐信范文
2013/12/28 职场文书
签约仪式主持词
2014/03/19 职场文书
春季防火方案
2014/05/10 职场文书
2016党员入党决心书
2015/09/22 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
基于docker安装zabbix的详细教程
2022/06/05 Servers