移动端手指操控左右滑动的菜单


Posted in Javascript onSeptember 08, 2019

本文实例为大家分享了移动端手指操控左右滑动菜单的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>  
<html lang="en">  
<head>  
  <meta charset="UTF-8">  
  <title>移动端手指操控左右滑动的菜单</title> 
  <style type="text/css"> 
  body {margin:0;}
  .menu-wrap {
   width: 100%;
   height: 50px;
   overflow: hidden;
  }
  .menu-wrap-layer2 {
   width: 100%;
   height: 50px;
   overflow: hidden;
  }
  .menu-list {
   display: inline-block;
   white-space: nowrap;
   transition-duration: 0ms;
   transform: translateX(0px);
  }
  .menu-list-item {
   display: inline-block;
  }
  .menu-list-item span {
   display: inline-block;
   width: 100px;
   margin: 0 3px;
   text-align: center;
  }
  </style>  
</head>  
<body> 
<div id="menu-wrap" class="menu-wrap">
 <div class="menu-list js-menu-list">
   <div class="menu-list-item">
     <span data-index="0">全站</span>    
   </div>
  <div class="menu-list-item">
     <span data-index="1">动画</span>
   </div>
   <div class="menu-list-item">
     <span data-index="2">番剧</span>
   </div>
  <div class="menu-list-item">
     <span data-index="3">国创</span>
   </div>
   <div class="menu-list-item">
     <span data-index="4">音乐</span>
   </div>
  <div class="menu-list-item">
     <span>舞蹈</span>
   </div>
   <div class="menu-list-item">
     <span>科技</span>
   </div>
  <div class="menu-list-item">
     <span>游戏</span>
   </div>
   <div class="menu-list-item">
     <span>娱乐</span>
   </div>
  <div class="menu-list-item">
     <span>电影</span>
   </div>
   <div class="menu-list-item">
     <span>电视剧</span>
   </div>
  <div class="menu-list-item">
     <span>纪录片</span>
   </div>   
 </div> 
</div>
<div>
<div class="menu-wrap-layer2 js-menu-wrap-layer2 js-menu-wrap0" style="display: block;">
 <div class="menu-list js-menu-list">
   <div class="menu-list-item">
     <span>二级菜单1</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单2</span>
   </div>
   <div class="menu-list-item">
     <span>二级菜单3</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单4</span>
   </div>
   <div class="menu-list-item">
     <span>二级菜单5</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单6</span>
   </div>
   <div class="menu-list-item">
     <span>二级菜单7</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单8</span>
   </div>
   <div class="menu-list-item">
     <span>二级菜单9</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单10</span>
   </div>
   <div class="menu-list-item">
     <span>二级菜单11</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单12</span>
   </div>   
 </div> 
</div> 
 
<div class="menu-wrap-layer2 js-menu-wrap-layer2 js-menu-wrap1" style="display: none;">
 <div class="menu-list js-menu-list">
   <div class="menu-list-item">
     <span>二级菜单s1</span>
   </div>
  <div class="menu-list-item">
     <span>二级菜单s2</span>
   </div>   
 </div> 
</div>
</div>
 
 
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script type="text/javascript">
 
 
$(function() {
 var menu = function(wrap, menuList, menuItems) {
 var deviceWidth = $(window).width();
 var positionX = 0;
 var menuListPositionX1 = wrap.offset().left; 
 var menuListPositionX2 = menuListPositionX1 + wrap.width();   
 
 $(menuList).attr("style","transition-duration: 0ms;transform: translateX(0px);");
 
 menuList.addEventListener('touchstart',function(event){
  if(event.targetTouches.length == 1){
     var touch = event.targetTouches[0];
     positionX = touch.pageX;
     //确定本次拖动transform的初始值
     var transformStr = menuList.style.transform;
     transformStr = transformStr.substring(11);
     var index = transformStr.lastIndexOf("p");
     transformStr = transformStr.substring(0, index);
     transformX = parseInt(transformStr);
     //确定本次拖动的div宽度值
     var widthStr = menuList.style.width;
     thisWidth = parseInt(widthStr.substring(0,widthStr.lastIndexOf("p")));
   }
 }, false);
 menuList.addEventListener('touchmove', function(event) {
   //阻止其他事件
   event.preventDefault();
   //获取当前坐标
   if(event.targetTouches.length == 1){
     var touch = event.targetTouches[0];
     menuList.style.transform = 'translateX('+(transformX+touch.pageX-positionX)+'px)';
     $(menuList).css("width",thisWidth+positionX-touch.pageX);
   }
 }, false);
 menuList.addEventListener('touchend', function(event) {
   var menuItem1 = menuItems[0];
   var menuItem1Left = $(menuItem1).offset().left;
   var menuItem2 = menuItems[menuItems.length-1];
   var menuItemPositionX = $(menuItem2).offset().left+$(menuItem2).width();
   var firstToLast = menuItemPositionX - menuItem1Left;
   if (menuItem1Left > menuListPositionX1 || firstToLast < deviceWidth) {
     menuList.style.transform = 'translateX('+(menuListPositionX1)+'px)';
   }
   if(menuItemPositionX < menuListPositionX2 && menuItem1Left < 0 && firstToLast > deviceWidth) {
    var myWidth = $(menuList).width() - deviceWidth;
     menuList.style.transform = 'translateX('+(0-myWidth)+'px)';
   }
 }, false);
 }
 
 var event = function() {
 $('#menu-wrap .js-menu-list span').click(function () {
  console.log($(this).attr('data-index'));
  var activeMenu = $('.js-menu-wrap' + $(this).attr('data-index'));
  activeMenu.siblings().hide();
  activeMenu.show();
 });
 }
 var init = function() {
 var menuWrap = $('#menu-wrap');
 var menuList = $("#menu-wrap .js-menu-list")[0];
 var menuListItems = $("#menu-wrap .menu-list-item");
 menu(menuWrap, menuList, menuListItems);
 
 var menuWrapLayer2 = $('.js-menu-wrap-layer2');
 var helper = function (tempWrap, tempMenuList, tempMenuListItems) { 
  var tempFun = function() {
  menu(tempWrap, tempMenuList, tempMenuListItems);
  }();
 } 
 for (var i = 0; i < menuWrapLayer2.length; i++) {
  var tempWrap = $(menuWrapLayer2[i]);
  var tempMenuList = $(menuWrapLayer2[i]).find('.js-menu-list')[0];
  var tempMenuListItems = $(menuWrapLayer2[i]).find('.menu-list-item');
  helper(tempWrap, tempMenuList, tempMenuListItems);
 }
 event();
 }();
});
</script>
</body>  
</html>

移动端手指操控左右滑动的菜单

移动端手指操控左右滑动的菜单

移动端手指操控左右滑动的菜单

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
JavaScript数组操作详解
Feb 04 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 #Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 #Javascript
swiper4实现移动端导航切换
Oct 16 #Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 #Javascript
vue实现抖音时间转盘
Sep 08 #Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 #Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 #Javascript
You might like
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
二招解决php乱码问题
2012/03/25 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php去掉文件前几行的方法
2015/07/29 PHP
PHP可变函数学习小结
2015/11/29 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python编程开发之日期操作实例分析
2015/11/13 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
Python实现区域填充的示例代码
2021/02/03 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
大学生入党思想汇报
2014/01/14 职场文书
就业协议书样本
2014/08/20 职场文书
文案策划岗位职责
2015/02/11 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
校运会加油稿大全
2015/07/22 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技