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 相关文章推荐
Jquery 扩展方法
May 06 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
Dec 18 Javascript
javascript实现的右下角弹窗实例
Apr 24 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
Angular2 组件交互实例详解
Aug 24 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
echarts浮动显示单位的实现方法示例
Dec 04 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
2015/11/09 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python中with及contextlib的用法详解
2017/06/08 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
2014年卫生监督工作总结
2014/12/09 职场文书
委托函范文
2015/01/29 职场文书
小学生暑假安全公约
2015/07/14 职场文书
python异常中else的实例用法
2021/06/15 Python