微信小程序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 相关文章推荐
常用js脚本
Dec 03 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 Javascript
JavaScript的strict模式与with关键字介绍
Feb 08 Javascript
javascript实现简单的省市区三级联动
May 14 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
Node.js与MySQL交互操作及其注意事项
Oct 05 Javascript
利用vue实现模态框组件
Dec 19 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
Sep 18 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 Vue.js
微信小程序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桌面中心(二) 数据库写入
2007/03/11 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
教师产假请假条范文
2014/04/10 职场文书
中专生自荐信
2014/06/25 职场文书
贷款委托书
2014/08/01 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
财务稽核岗位职责
2015/04/13 职场文书
降价通知函
2015/04/23 职场文书
《我是什么》教学反思
2016/02/16 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书