Mui实现webview侧滑模块
时间:2019-10-11
本文章向大家介绍Mui实现webview侧滑模块,主要包括Mui实现webview侧滑模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello MUI</title> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <link rel="stylesheet" href="css/mui.min.css"> <style type="text/css"> /* 解决滑动警告问题:Unable to preventDefault inside passive event listener */ * { touch-action: pan-y; } </style> </head> <body> <!-- 头部 --> <header class="mui-bar mui-bar-nav"> <a class="mui-action-menu mui-icon mui-icon-bars mui-pull-left"></a> <!-- <a class="mui-action-back mui-btn mui-btn-link mui-pull-right">关闭</a> --> <h1 class="mui-title">标题</h1> </header> <!-- 底部选卡 --> <nav class="mui-bar mui-bar-tab"> <a class="mui-tab-item mui-active"> <span class="mui-icon mui-icon-home"></span> <span class="mui-tab-label">首页</span> </a> <a class="mui-tab-item"> <span class="mui-icon mui-icon-phone"></span> <span class="mui-tab-label">电话</span> </a> <a class="mui-tab-item"> <span class="mui-icon mui-icon-email"></span> <span class="mui-tab-label">邮件</span> </a> <a class="mui-tab-item"> <span class="mui-icon mui-icon-gear"></span> <span class="mui-tab-label">设置</span> </a> </nav> </body> <script src="js/mui.min.js"></script> <script> var main,menu, mask = mui.createMask(_closeMenu); var showMenu = false,mode = 'menu-move'; // var mode = 'main-move'; if (!mui.os.android) { //整体滑动暂不支持android手机,因为两个页面的移动动画,无法保证同步性; document.getElementById("move-togger").classList.remove('mui-hidden'); var spans = document.querySelectorAll('.android-only'); for (var i=0,len=spans.length;i<len;i++) { spans[i].style.display = "none"; } } mui.init({ swipeBack: false, beforeback: back }); function back() { if (showMenu) { //菜单处于显示状态,返回键应该先关闭菜单,阻止主窗口执行mui.back逻辑; closeMenu(); return false; } else { //菜单处于隐藏状态,执行返回时,要先close菜单页面,然后继续执行mui.back逻辑关闭主窗口; menu.close('none'); return true; } } //plusReady事件后,自动创建menu窗口; mui.plusReady(function() { main = plus.webview.currentWebview(); //setTimeout的目的是等待窗体动画结束后,再执行create webview操作,避免资源竞争,导致窗口动画不流畅; setTimeout(function () { //侧滑菜单默认隐藏,这样可以节省内存; menu = mui.preload({ id: 'test', url: 'test.html', styles: { left: 0, width: '70%', zindex: 9997 } }); },300); //页面底部切换处理 }); /** * 显示菜单菜单 */ function openMenu() { if (!showMenu) { //侧滑菜单处于隐藏状态,则立即显示出来; //显示完毕后,根据不同动画效果移动窗体; menu.show('none', 0, function() { switch (mode){ case 'main-move': //主窗体开始侧滑; main.setStyle({ left: '70%', transition: { duration: 150 } }); break; case 'menu-move': menu.setStyle({ left: '0%', transition: { duration: 150 } }); break; case 'all-move': main.setStyle({ left: '70%', transition: { duration: 150 } }); menu.setStyle({ left: '0%', transition: { duration: 150 } }); break; } }); //显示遮罩 mask.show(); showMenu = true; } } /** * 关闭侧滑菜单 */ function closeMenu () { _closeMenu(); //关闭遮罩 mask.close(); } /** * 关闭侧滑菜单(业务部分) */ function _closeMenu() { if (showMenu) { //关闭遮罩; switch (mode){ case 'main-move': //主窗体开始侧滑; main.setStyle({ left: '0', transition: { duration: 150 } }); break; case 'menu-move': //主窗体开始侧滑; menu.setStyle({ left: '-70%', transition: { duration: 150 } }); break; case 'all-move': //主窗体开始侧滑; main.setStyle({ left: '0', transition: { duration: 150 } }); //menu页面同时移动 menu.setStyle({ left: '-70%', transition: { duration: 150 } }); break; } //等窗体动画结束后,隐藏菜单webview,节省资源; setTimeout(function() { menu.hide(); }, 200); //改变标志位 showMenu = false; } } //点击左上角图标,打开侧滑菜单; document.querySelector('.mui-icon-bars').addEventListener('tap', openMenu); // document.getElementById("show-btn").addEventListener('tap',openMenu); //在android4.4中的swipe事件,需要preventDefault一下,否则触发不正常 //故,在dragleft,dragright中preventDefault window.addEventListener('dragright', function(e) { e.detail.gesture.preventDefault(); }); window.addEventListener('dragleft', function(e) { e.detail.gesture.preventDefault(); }); //主界面向右滑动,若菜单未显示,则显示菜单;否则不做任何操作; window.addEventListener("swiperight", openMenu); //主界面向左滑动,若菜单已显示,则关闭菜单;否则,不做任何操作; window.addEventListener("swipeleft", closeMenu); //menu页面向左滑动,关闭菜单; window.addEventListener("menu:swipeleft", closeMenu); //重写mui.menu方法,Android版本menu按键按下可自动打开、关闭侧滑菜单; mui.menu = function() { if (showMenu) { closeMenu(); } else { openMenu(); } } </script> </html>
手机上的运行效果:
参考:Mui官网
原文地址:https://www.cnblogs.com/Jayeblog/p/11655178.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Gradle之恋(14)-实战spring mvc插件式多项目构建
- Spring Boot 开箱即用
- Qt音视频开发2-vlc回调处理
- cmake学习
- 数据分析:在缓慢变化中寻找跳变——基于缓慢变化维度的用户分群
- 02 Confluent_Kafka权威指南 第二章:安装kafka
- Kafka集群搭建过程(kafka2.5+eagle)
- 07 Confluent_Kafka权威指南 第七章: 构建数据管道
- java中的reference(二): jdk1.8中Reference的源码阅读
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
- java的reference(五): WeakReference的应用之二--InheritableThreadLocal源码分析
- rabbitmq-3.7.7安装过程
- 09 Confluent_Kafka权威指南 第九章:管理kafka集群
- 关于禁止使用Executors创建线程池的分析
- ArrayList源码分析(基于jdk1.8)(一):源码及基本操作