vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)


Posted in Javascript onApril 22, 2017

先给大家展示下效果图,感觉还不错请参考实现代码:

vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)

使用技术:vue2.0 webpack vue-touch 一些简单的javascript;

(注意:vue-touch 使用的是2.0.0版本 需要与vue2.0.0兼容)

vue-touch(地址:https://github.com/vuejs/vue-touch 注意是next 分支)

左侧导航可滑动(右侧视图窗因为和左逻辑一样 就没写)

var VueTouch = require('vue-touch')
Lib.Vue.use(VueTouch, {name: 'v-touch'})

通过npm 安装后vuetouch 后引入

我这里Lib,是我的一个方法 你也可以 直接Vue.use()引用

{name:'v-touch'}的作用 声明一个以vue-touch的标签

然后 在html内写一个 <vue-touch></vue-touch>就可以,当然后面我们要写入方法;

附:vue-touch方法

因为vue-touch其实封装了 hammer.js的方法 其实我们这里介绍的也就是他几个事件;详情可以搜索 hammer.js的文档;

hammer.js主要针对触屏的6大事件进行监听。如下图所示:

1、  Pan事件:在指定的dom区域内,一个手指放下并移动事件,即触屏中的拖动事件。这个事件在屏触开发中比较常用,如:左拖动、右拖动等,如手要上使用QQ时向右滑动出现功能菜单的效果。该事件还可以分别对以下事件进行监听并处理:

Panstart:拖动开始、Panmove:拖动过程、Panend:拖动结束、Pancancel:拖动取消、Panleft:向左拖动、Panright:向右拖动、Panup:向上拖动、Pandown:向下拖动

2、  Pinch事件:在指定的dom区域内,两个手指(默认为两个手指,多指触控需要单独设置)或多个手指相对(越来越近)移动或相向(越来越远)移动时事件。该事件事以分别对以下事件进行监听并处理:

Pinchstart:多点触控开始、Pinchmove:多点触控过程、Pinchend:多点触控结束、Pinchcancel:多点触控取消、Pinchin:多点触控时两手指距离越来越近、Pinchout:多点触控时两手指距离越来越远

3、  Press事件:在指定的dom区域内触屏版本的点击事件,这个事件相当于PC端的Click事件,该不能包含任何的移动,最小按压时间为500毫秒,常用于我们在手机上用的“复制、粘贴”等功能。该事件分别对以下事件进行监听并处理:

Pressup:点击事件离开时触发

4、  Rotate事件:在指定的dom区域内,当两个手指或更多手指成圆型旋转时触发(就像两个手指拧螺丝一样)。该事件分别对以下事件进行监听并处理:

Rotatestart:旋转开始、Rotatemove:旋转过程、Rotateend:旋转结束、Rotatecancel:旋转取消

5、  Swipe事件:在指定的dom区域内,一个手指快速的在触屏上滑动。即我们平时用到最多的滑动事件。

Swipeleft:向左滑动、Swiperight:向右滑动、Swipeup:向上滑动、Swipedown:向下滑动

6、Tap事件:在指定的dom区域内,一个手指轻拍或点击时触发该事件(类似PC端的click)。该事件最大点击时间为250毫秒,如果超过250毫秒则按Press事件进行处理。

(以上作者毫无节奏的摘抄一下,其实我也是费好大劲搜索的呀)
这里注意swipe这个方法;我们不需要因为这个滑动和我们需要的滑动是不一样的;

Panstart 是我们需要的;

展示一下 div 代码层;

vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)

<v-touch class="ul" 
 v-on:pandown="onPanStart" //向下滑动
 v-on:panmove="onPanmove" //滑动结束
 v-on:panup="onPandup"> //向上滑动
</v-touch>

注意:也可以进行 事件的限制 用户多长时间可以执行

//我没用到这句
 v-bind:pan-options="{ direction: 'panup', threshold: 100 }">

首先定一个 公共变量

//省去一些 代码
var lefthe = 0; //检测滑动的位置
onPanStart:function(data)
 {
 this.positionjson.transition=''
 console.log(data)
 var y = data.deltaY; //事件执行 所滑动的距离
 lefthe = y + this.lefthe; //滑动的距离 记录到 lefthe 方便下次执行
 console.log(lefthe)
 if(lefthe >=50)
 {
 //限制 不能一直往上拉 拉到宇宙呢?我这里是写死的
  lefthe = 0;
 //回弹效果 在 滑动结束后 执行
 return
 }else{
 }
 this.positionjson.top = lefthe +'px';
 },

滑动结束 事件

onPanend:function(data)
 {
 if(lefthe ==0)
 {
 console.log('现在是0')
 this.positionjson.top = lefthe +'px';
 //滑动结束 执行 一些事件 lefthe 0 的时候其实也就是下拉到顶的过程
 this.positionjson.transition='0.2s ease 0s'
 }else{
 }
 this.lefthe = lefthe;
 },
//上拉代码块
onPandup:function(data)
 {
 var domul =document.getElementById('domul');
 this.positionjson.transition=''
 var y = data.deltaY; //下拉的距离
 var boxheight = this.boxheight; //视图高度 也就是分辨率
 var liheight = document.getElementById('libox').clientHeight; //左侧每个li的高度
 console.log(liheight+'元素的高')
 var zongheight = this.navapi.list.length * 70; //就能得出li父盒子高度
 var bottomheight = -(zongheight - boxheight) + -100; //计算下拉到 滑动盒子的高度 - 视图高度 =上拉到底的位置
 if(lefthe <= bottomheight)
 {
 // console.log('到底啦啦啦啦啦')
 return;
 }else{}
 lefthe = y + this.lefthe;
 this.positionjson.top = lefthe +'px';
 },

以上所述是小编给大家介绍的vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
提高网站性能之 如何对待JavaScript
Oct 31 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
vue 设置路由的登录权限的方法
Jul 03 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 Javascript
Vue form 表单提交+ajax异步请求+分页效果
Apr 22 #Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 #Javascript
JS使用cookie实现只出现一次的广告代码效果
Apr 22 #Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 #Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 #jQuery
HTML5+Canvas调用手机拍照功能实现图片上传(下)
Apr 21 #Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 #Javascript
You might like
PHP教程 基本语法
2009/10/23 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
Python正则表达式指南 推荐
2018/10/09 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
保险专业大专生求职信
2013/10/26 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
祝寿主持词
2015/07/02 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis