vue 和vue-touch 实现移动端左右导航效果(仿京东移
先给大家展示下效果图,感觉还不错请参考实现代码
使用技术vue2.0 webpack vue-touch 一些简单的javascript;
(注意:vue-touch 使用的是2.0.0版本 需要与vue2.0.0兼容)
vue-touch(地址:https://github./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 代码层;
<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. = lefthe +'px'; },
滑动结束 事件
onPanend:function(data) { if(lefthe ==0) { console.log('现在是0') this.positionjson. = 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. = lefthe +'px'; },
以上所述是长沙网络推广给大家介绍的vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航),希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程