移动端H5开发 (滑动事件)

  最近一直在做手机App H5的开发,在开发过程中,经常会遇到很多滑动事件,写个demo,分享自己的一些写法。(如写的不好,轻喷!)

  直接贴代码

  html css代码 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>touch demo</title>
<style type="text/css">
#demo{
    margin-top:200px;
    height: 200px;
    display: -webkit-box;
}
#demo1{
    background: red;
    width: 100%;
    height: 200px;
}
#demo2{
    background: blue;
    width: 100%;
    height: 200px;
}
body{
    overflow: hidden;
}
</style>
</head>
<body>
    <div id="demo">
        <div id="demo1"></div>
        <div id="demo2"></div>
    </div>
</body>
</html>

js代码

	var slideDom = document.getElementById("demo");//滑动区域
	var length = slideDom.children.length;//子类节点长度
	var index = 0;//初始下标
	window.prevX = 0;
	slideDom.addEventListener(‘touchstart‘, touchstart, false);
	slideDom.addEventListener(‘touchmove‘, touchmove, false);
	slideDom.addEventListener(‘touchend‘, touchend, false);

	//开始滑动
	function touchstart(e){
		var point = getPoint(e);
		window.startX = point.pageX;
		console.log(window.startX);
	};
	//滑动过程中
	function touchmove(e){
		e.preventDefault();//阻止默认行为
		var point = getPoint(e);
		window.moveX = point.pageX;
		window.deltaX = window.moveX - window.startX;
		domove(window.deltaX+window.prevX);
	};
	//结束滑动
	function touchend(e){
		var x = Math.abs(window.deltaX);
		var item_w = document.getElementById("demo1").offsetWidth;
		if(window.deltaX>0){
			if(x>item_w){
				var indexd = Math.round(x / item_w);
				index = index - indexd;
			}else{
				if(x/item_w > 0.3){
					index--
				}
			}
		}else if(window.deltaX<0){
			if(x>item_w){
				var indexd = Math.round(x / item_w);
				index = index + indexd;
			}else{
				if(x/item_w > 0.3){
					index++;
				}
			}
		}
		if(index >= (length-1)){
			index = length-1;
		}
		if(index <0 ){
			index = 0;
		}
		window.prevX = -index*item_w;
		domove(window.prevX,true);
	};
	//默认以第一个手指的位置计算
	function getPoint(e) {
		return e.touches ? e.touches[0] : e;
	};

	//利用transform移动
	function domove(x,t){
		if(t){
			slideDom.setAttribute(‘style‘, ‘transform: translate(‘ + x + ‘px, 0px);transition:transform 300ms ease‘);
		}else{
			slideDom.setAttribute(‘style‘, ‘transform: translate(‘ + x + ‘px, 0px);transition:transform 0ms ease‘);
		}

	};

  

如果用户是多指操作,默认以第一个手指的位置进行计算。

在事件结束时,对div移动的位置进行计算。

在 index的范围内,如果div移动范围超过的0.3;就在切换到下一index的div;  

时间: 2024-12-29 16:49:22

移动端H5开发 (滑动事件)的相关文章

移动端 h5开发相关内容总结——CSS篇

移动端 h5开发相关内容总结——CSS篇 标签: css移动 2016-01-06 15:59 5536人阅读 评论(3) 收藏 举报  分类: HTML+CSS(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=n

移动端触屏滑动事件

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件能跟踪到屏幕滑动的每根手指. 以下是四种touch事件 touchstart:     //手指放到屏幕上时触发 touchmove:      //手指在屏幕上滑动式触发 touchend:    //手指离开屏幕时触发 touchcancel:     //系统取消touch事件的时候触发,这个

移动端 h5开发相关内容总结(三)

之前写过两篇开发中遇到的问题和解决方案.当时是CSS 和 JavaScript 分开写的.现在写这篇文章的时候感觉很多内容都是有内在联系的,所以不好分开. 给大家分享一下这半年来的感受吧: 知道和理解之间是有很大距离的.别人谈到一个知识点,能接上嘴并且能发表一下自己的意见,这叫知道.遇到问题能够想到用什么知识点解决问题,这叫理解. 所以有很多知识点自己确实在书上都看到过但是在平时遇到问题的时候却不知道怎么去用或者说想到去用,有时候会有同事给一下指导说用什么解决问题.关键时候还是多看(看书,看别人

移动端 h5 开发相关内容总结——JavaScript 篇

1.改变页面标题的内容 有时候我们开发 h5页面的时候需要动态的去更新title 的名字,这个时候使用 document.titile='修改后的名字'; 就可以解决我们的问题. 或者使用 //当前firefox对 title 参数不支持 history.pushstate(state,title,url); 这种方法不仅能够修改 title 而且能够修改 url 的值,并且将这些信息存储到浏览器的历史堆栈中,当用户使用返回按钮的时候能够得到更加好的体验. 当我们在做一个无刷新更新页面数据的时候

转---移动端 h5开发相关内容总结——CSS篇

作者:伯乐在线专栏作者 - zhiqiang21 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> 其它相关配置内容如下: width viewport 宽度(数值/device-width) heig

移动端js手指滑动事件初体验

今天在公司遇到做一个移动端手指滑动的效果,刚开始用了swiper.js插件发现效果不好(文字存在模糊效果).后来查了一些资料,自己手写了一个使用原生js写的滑动效果. 下面直接上代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=

移动端h5开发相关内容总结css篇--自己总结

原文参考http://mp.weixin.qq.com/s/Nho2DHj-Y59j2F62vpN9jQ 1.开发移动端,头部必要的配置<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">(各属性值不在介绍,在开发中小米(2016年小米4)测试user-scalable=no是不起作用的)2.rem的使用设置根节点的font-size,开发

移动端H5开发问题记录

1. 当弹出键盘时,会改变页面高度,影响页面样式 通过window.onsize事件可以控制键盘弹出或消失的时候的样式 var h = document.body.scrollHeight // 用onresize事件监控窗口或框架被调整大小,先把一开始的高度记录下来 window.onresize = function () { // 如果当前窗口小于一开始记录的窗口高度,那就让当前窗口等于一开始窗口的高度 // alert("h:" + h + "; <br>

移动端H5开发入门

零.一些资料 1. http://www.w3school.com.cn/h.asp 2. http://www.imooc.com/learn/33     # 感觉这个还是有些难度的,可以看一些其他的视频资料."慕课网"  nice~ 一.前言 首先声明一下自己吧.对JS和CSS都属于.马马虎虎的那种.昨天才发现 原来页面中的JS可以这样写. (function ( window ) {     function aax( str ) {         alert(str);