微信小程序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中Get和Set访问器的实现代码
Sep 19 Javascript
jQuery Jcrop插件实现图片选取功能
Nov 23 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
jQuery设计思想
Mar 07 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
Oct 25 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 Javascript
vue+Element实现搜索关键字高亮功能
May 28 Javascript
js实现简单页面全屏
Sep 17 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 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扩展ZF――Validate扩展
2008/01/10 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
js获取ip和地区
2017/03/10 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
如何保障Web服务器安全
2014/05/05 面试题
财务助理岗位职责
2013/11/10 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
什么是就业协议书
2014/04/17 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014年销售员工作总结
2014/12/01 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python