vue 和vue

网友投稿 266 2023-05-21


vue 和vue

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

使用技术: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其实封装了 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-on:pandown="onPanStart" //向下滑动

v-on:panmove="onPanmove" //滑动结束

v-on:panup="onPandup"> //向上滑动

v-on:pandown="onPanStart" //向下滑动

v-on:panmove="onPanmove" //滑动结束

v-on:panup="onPandup"> //向上滑动

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

//我没用到这句

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:funchttp://tion(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').clientHeigeFfDZsTht; //左侧每个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 实现移动端左右导航效果(仿京东移动站导航),希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ES6新特性五:Set与Map的数据结构实例分析
下一篇:Java微信公众平台开发(6) 微信开发中的token获取
相关文章

 发表评论

暂时没有评论,来抢沙发吧~