微信小程序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圆角插件
Oct 26 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
jquery对ajax的支持介绍
Dec 10 Javascript
js调试系列 初识控制台
Jun 18 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
WebSocket的通信过程与实现方法详解
Apr 29 Javascript
详解原生JS动态添加和删除类
Mar 26 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 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学习之运算符相关概念
2011/06/09 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
使用python实现多维数据降维操作
2020/02/24 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
介绍一下JNDI的基本概念
2013/07/26 面试题
什么是Web Service?
2012/07/25 面试题
师范应届生教师求职信
2013/11/05 职场文书
yy结婚证婚词
2014/01/10 职场文书
法律系毕业生求职信
2014/05/28 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2014年纪委工作总结
2014/12/05 职场文书
趣味运动会加油词
2015/07/18 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers