简单封装的一个web的手势,tab和swipe,里面的具体数值都是自定义上去的,没有实际的标准,可以自行去修改都行
前两个是详解,js插件在最后一部分代码 ```
//封装web的tab步骤详解 <!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<!-- 标准理想视口 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>tab单击事件封装</title>
<style>
div {
width: 200px;
height: 200px;
background-color: #0a0;
margin: 100px auto;
}
</style>
</head> <body>
<div></div>
</body> </html>
<script>
// 封装web的单击tab事件。详解
// 0 接触到的事件是touchstart 和 touchend
// 1 首先,点击到松开的时间不能过长,300ms左右
// 2 点击的时候,移动距离不能大于5px // 获取元素
var div = document.querySelector('div'); // 定义变量去接收时间和开始的xy位置
var startTime, startX, startY; // 按下事件
div.addEventListener('touchstart', function (e) { // 判断手指的个数
if(e.touches.length>1){
return;
} // 获取按下的时间
startTime = Date.now(); // 获取到按下的视口位置
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
}) // 离开事件
div.addEventListener("touchend", function (e) { // 判断手指的个数
if(e.changedTouches.length>1){
return;
} // 获取离开时候的时间
var endTime = Date.now(); // 判断,先判断时间
if (endTime - startTime > 300) {
return;
} // 获取离开时候的位置
var endX = e.changedTouches[0].clientX;
var endY = e.changedTouches[0].clientY; // 判断位置
if (Math.abs(endX - startX) > 5 || Math.abs(endY - startY) > 5) {
return;
}
console.log("我被点击了")
})
</script>
```
```
<script>
// 封装swipe函数的详解
// 0 涉及到事件 touchstart和 touchend
// 1 滑动的时候,时间不能过长 大约800ms
// 2 滑动的时候,距离必须大于5px
// 先判断距离,然后判断滑动的方向
// X轴 结束方向大于开始方向,right,反之left
// Y轴 结束方向大于开始方向,down,反之up // 获取dom元素
div = document.querySelector('div'); // 定义变量接受开始的时间和位置
var startTime, startX, startY; // 按下事件
div.addEventListener("touchstart", function (e) { // 判断手指个数
if(e.touches.length>1){
return;
} // 获取按下的时间
startTime = Date.now(); // 获取按下的位置
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
}) // 离开事件
div.addEventListener("touchend", function (e) { // 判断手指个数
if(e.changedTouches.length>1){
return;
} // 获取离开时候的时间
var endTime = Date.now(); // 判断时间
if(endTime - startTime > 800){
return;
} // 获取离开时候的位置
var endX = e.changedTouches[0].clientX;
var endY = e.changedTouches[0].clientY; // 定义变量接受方向
var direction; // 先判断距离
if(Math.abs(endX-startX)>5){
direction = endX>startX? "right":"left";
}
if(Math.abs(endY-startY)>5){
direction = endY>startY? "down":"up";
}
console.log(direction);
})
</script>
```


最后封装成的插件js: ```
// 简单封装的移动web的tab和swipe插件
//函数名为 webM,可自行修改;
function webM(selector) { // 获取dom元素
var dom = document.querySelector(selector);
return {
tab: function (cb) {
// 封装web的单击tab事件。详解
// 0 接触到的事件是touchstart 和 touchend
// 1 首先,点击到松开的时间不能过长,300ms左右
// 2 点击的时候,移动距离不能大于5px // 获取元素
var div = document.querySelector('div'); // 定义变量去接收时间和开始的xy位置
var startTime, startX, startY; // 按下事件
div.addEventListener('touchstart', function (e) { // 判断手指的个数
if(e.touches.length>1){
return;
} // 获取按下的时间
startTime = Date.now(); // 获取到按下的视口位置
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
}) // 离开事件
div.addEventListener("touchend", function (e) { // 判断手指的个数
if(e.changedTouches.length>1){
return;
} // 获取离开时候的时间
var endTime = Date.now(); // 判断,先判断时间
if (endTime - startTime > 300) {
return;
} // 获取离开时候的位置
var endX = e.changedTouches[0].clientX;
var endY = e.changedTouches[0].clientY; // 判断位置
if (Math.abs(endX - startX) > 5 || Math.abs(endY - startY) > 5) {
return;
}
cb();
})
return this;
},
swipe: function (cb) {
// 封装swipe函数的详解
// 0 涉及到事件 touchstart和 touchend
// 1 滑动的时候,时间不能过长 大约800ms
// 2 滑动的时候,距离必须大于5px
// 先判断距离,然后判断滑动的方向
// X轴 结束方向大于开始方向,right,反之left
// Y轴 结束方向大于开始方向,down,反之up // 获取dom元素
div = document.querySelector('div'); // 定义变量接受开始的时间和位置
var startTime, startX, startY; // 按下事件
div.addEventListener("touchstart", function (e) { // 判断手指个数
if (e.touches.length > 1) {
return;
}
// 获取按下的时间
startTime = Date.now(); // 获取按下的位置
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
}) // 离开事件
div.addEventListener("touchend", function (e) { // 判断手指个数
if (e.changedTouches.length > 1) {
return;
}
// 获取离开时候的时间
var endTime = Date.now(); // 判断时间
if (endTime - startTime > 800) {
return;
} // 获取离开时候的位置
var endX = e.changedTouches[0].clientX;
var endY = e.changedTouches[0].clientY; // 定义变量接受方向
var direction; // 先判断距离
if (Math.abs(endX - startX) > 5) {
direction = endX > startX ? "right" : "left";
}
if (Math.abs(endY - startY) > 5) {
direction = endY > startY ? "down" : "up";
}
cb(direction);
})
return this;
}
}
}
```

简单封装的一个web的手势,tab和swipe,里面的具体数值都是自定义上去的,没有实际的标准,可以自行去修改都行前两个是详解,js插件在最后一部分代码```//封装web的tab步骤详解<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <!-- 标准理想视口 --> <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>tab单击事件封装</title> <style> div { width: 200px; height: 200px; background-color: #0a0; margin: 100px auto; } </style></head><body> <div></div></body></html><script> // 封装web的单击tab事件。详解 // 0 接触到的事件是touchstart 和 touchend // 1 首先,点击到松开的时间不能过长,300ms左右 // 2 点击的时候,移动距离不能大于5px // 获取元素 var div = document.querySelector('div'); // 定义变量去接收时间和开始的xy位置 var startTime, startX, startY; // 按下事件 div.addEventListener('touchstart', function (e) { // 判断手指的个数 if(e.touches.length>1){ return; } // 获取按下的时间 startTime = Date.now(); // 获取到按下的视口位置 startX = e.touches[0].clientX; startY = e.touches[0].clientY; }) // 离开事件 div.addEventListener("touchend", function (e) { // 判断手指的个数 if(e.changedTouches.length>1){ return; } // 获取离开时候的时间 var endTime = Date.now(); // 判断,先判断时间 if (endTime - startTime > 300) { return; } // 获取离开时候的位置 var endX = e.changedTouches[0].clientX; var endY = e.changedTouches[0].clientY; // 判断位置 if (Math.abs(endX - startX) > 5 || Math.abs(endY - startY) > 5) { return; } console.log("我被点击了") })</script>```![tab被点击](https://img-blog.csdn.net/201808292028367?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc1NzU5OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)```<script> // 封装swipe函数的详解 // 0 涉及到事件 touchstart和 touchend // 1 滑动的时候,时间不能过长 大约800ms // 2 滑动的时候,距离必须大于5px // 先判断距离,然后判断滑动的方向 // X轴 结束方向大于开始方向,right,反之left // Y轴 结束方向大于开始方向,down,反之up // 获取dom元素 div = document.querySelector('div'); // 定义变量接受开始的时间和位置 var startTime, startX, startY; // 按下事件 div.addEventListener("touchstart", function (e) { // 判断手指个数 if(e.touches.length>1){ return; } // 获取按下的时间 startTime = Date.now(); // 获取按下的位置 startX = e.touches[0].clientX; startY = e.touches[0].clientY; }) // 离开事件 div.addEventListener("touchend", function (e) { // 判断手指个数 if(e.changedTouches.length>1){ return; } // 获取离开时候的时间 var endTime = Date.now(); // 判断时间 if(endTime - startTime > 800){ return; } // 获取离开时候的位置 var endX = e.changedTouches[0].clientX; var endY = e.changedTouches[0].clientY; // 定义变量接受方向 var direction; // 先判断距离 if(Math.abs(endX-startX)>5){ direction = endX>startX? "right":"left"; } if(Math.abs(endY-startY)>5){ direction = endY>startY? "down":"up"; } console.log(direction); })</script>```![swipe滑动](https://img-blog.csdn.net/20180829203032257?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc1NzU5OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)最后封装成的插件js:```// 简单封装的移动web的tab和swipe插件//函数名为 webM,可自行修改;function webM(selector) { // 获取dom元素 var dom = document.querySelector(selector); return { tab: function (cb) { // 封装web的单击tab事件。详解 // 0 接触到的事件是touchstart 和 touchend // 1 首先,点击到松开的时间不能过长,300ms左右 // 2 点击的时候,移动距离不能大于5px // 获取元素 var div = document.querySelector('div'); // 定义变量去接收时间和开始的xy位置 var startTime, startX, startY; // 按下事件 div.addEventListener('touchstart', function (e) { // 判断手指的个数 if(e.touches.length>1){ return; } // 获取按下的时间 startTime = Date.now(); // 获取到按下的视口位置 startX = e.touches[0].clientX; startY = e.touches[0].clientY; }) // 离开事件 div.addEventListener("touchend", function (e) { // 判断手指的个数 if(e.changedTouches.length>1){ return; } // 获取离开时候的时间 var endTime = Date.now(); // 判断,先判断时间 if (endTime - startTime > 300) { return; } // 获取离开时候的位置 var endX = e.changedTouches[0].clientX; var endY = e.changedTouches[0].clientY; // 判断位置 if (Math.abs(endX - startX) > 5 || Math.abs(endY - startY) > 5) { return; } cb(); }) return this; }, swipe: function (cb) { // 封装swipe函数的详解 // 0 涉及到事件 touchstart和 touchend // 1 滑动的时候,时间不能过长 大约800ms // 2 滑动的时候,距离必须大于5px // 先判断距离,然后判断滑动的方向 // X轴 结束方向大于开始方向,right,反之left // Y轴 结束方向大于开始方向,down,反之up // 获取dom元素 div = document.querySelector('div'); // 定义变量接受开始的时间和位置 var startTime, startX, startY; // 按下事件 div.addEventListener("touchstart", function (e) { // 判断手指个数 if (e.touches.length > 1) { return; } // 获取按下的时间 startTime = Date.now(); // 获取按下的位置 startX = e.touches[0].clientX; startY = e.touches[0].clientY; }) // 离开事件 div.addEventListener("touchend", function (e) { // 判断手指个数 if (e.changedTouches.length > 1) { return; } // 获取离开时候的时间 var endTime = Date.now(); // 判断时间 if (endTime - startTime > 800) { return; } // 获取离开时候的位置 var endX = e.changedTouches[0].clientX; var endY = e.changedTouches[0].clientY; // 定义变量接受方向 var direction; // 先判断距离 if (Math.abs(endX - startX) > 5) { direction = endX > startX ? "right" : "left"; } if (Math.abs(endY - startY) > 5) { direction = endY > startY ? "down" : "up"; } cb(direction); }) return this; } }}```

简单封装的web里面的tab点击和swipe滑动的小插件的更多相关文章

  1. 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage

    https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...

  2. jquery表格可编辑修改表格里面的值,点击td变input无刷新更新表格

    td点击后变为input可以输入,更新数据,无刷新更新 演示 XML/HTML Code <table border="0" cellpadding="0" ...

  3. 简单了解:Web前端攻击方式及防御措施

    一.XSS [Cross Site Script]跨站脚本攻击  恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用 ...

  4. ajax实现注册用户名时动态显示用户名是否已经被注册(1、ajax可以实现我们常见的注册用户名动态判断)(2、jquery里面的ajax也是类似我们这样封装了的函数)

    ajax实现注册用户名时动态显示用户名是否已经被注册(1.ajax可以实现我们常见的注册用户名动态判断)(2.jquery里面的ajax也是类似我们这样封装了的函数) 一.总结 1.ajax可以实现我 ...

  5. web自动化框架—BasePage 类的简单封装

    优秀的框架都有属于自己的思想,在搭建web自动化测试框架时,我们通常都遵循 PO(Page Object)思想. 简单理解就是我们会把每个页面看成一个对象,一切皆对象,面向对象编码,这样会让我们更好的 ...

  6. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  7. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

  8. nopcommerce里面的@Html.Widget("home_page_top") 是什么?

    很多朋友在修改模板的时候看到很多类似@Html.Widget("xxx")的东西,这里简单介绍一下流程: 比如@Html.Widget("home_page_top&qu ...

  9. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

随机推荐

  1. P2542 [AHOI2005]航线规划 LCT维护双连通分量

    \(\color{#0066ff}{ 题目描述 }\) 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系--一个巨大的由千百万星球构成的Samuel ...

  2. 【洛谷2324】[SCOI2005]骑士精神 IDA*

    [SCOI2005]骑士精神 描述 在一个\(5×5\)的棋盘上有\(12\)个白色的骑士和\(12\)个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为 ...

  3. 资深专家深度剖析Kubernetes API Server第2章(共3章)

    欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...

  4. 1.Tow Sum(两数和)

    Level: ​ Easy 题目描述: Given an array of integers, return indices of the two numbers such that they add ...

  5. 河南省第十一届ACM程序设计竞赛 修路

    Problem C: 修路 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 63  Solved: 22[Submit][Status][Web Boar ...

  6. angularJs获取复选框中id 进行批量删除

    主要思路:我们需要定义一个用于存储选中 ID 的数组,当我们点击复选框后判断是选择还是取消选择,如果是选择就加到数组中,如果是取消选择就从数组中移除.在点击删除按钮时需要用到这个存储了 ID 的数组. ...

  7. HP EliteBook 8570p TouchPad Issue

    最近更换了笔记本,当时TouchPad总是不能用,有个指示灯总是亮着:同事同型号的就没有这样的问题. Google了好久终于找到了一篇帖子能解决我的问题.分享给朋友们. Link: http://h3 ...

  8. 2-29 while

    do while for

  9. vs如何在Windows身份验证下调试Web项目

    vs做的Web项目发布到IIS站点后,通常我们还希望利用vs来调试代码.如果Web在IIS中设置成了Windows身份验证,那么我们如何在vs调试的时候,也同样采用Windows身份认证进行调试呢? ...

  10. void类型指针的基本用法

    void作为指针时可以用任意类型的的指针值都可以给它进行赋值和传递,但是输出时必须时显性输出 代码如下: #include<cstdio> #include<iostream> ...