关于移动端手势滑动和上拉加载下拉刷新简单模拟笔记

本人接触前端不久,写的不好的请多多指教,欢迎指出

最近做到一个需求需要实现移动端的手势操作,在网上有找到不少不错的插件(PS:就不打广告了,一搜一大堆)

插件用起来确实不错,不过自己想研究下,便写了一个demo,实现了上拉、下拉触发,及左右手势滑动触发

上拉、下拉触发用了

$(window).scroll()                //当滚动条滚动时触发

scrollTop()(滚动条距离顶部的高度)

$(document).height(当前页面的总高度)

$(this).height(当前可视的页面高度);

具体请看下面附上代码

左右手势滑动触发

使用了js的addEventListener监听,

分别监听-touchstart事件,touchmove事件,touchend事件,主要获取clientX,clientY属性

touchstart:当鼠标点击屏幕时触发
touchmove:当鼠标在屏幕移动时触发
touchend:当鼠标离开屏幕时触发

属性:event.touches[0].clientX,event.touches[0].clientY获取x,y坐标

直接上代码,请多指教(PS:请使用移动模式调试)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<title>下拉刷新,滚动翻页</title>
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<style>
	li{border:1px solid #dfdfdf;height:50px;position:relative;width:140%}
	li div{width:30%;height:30px;float:right}
</style>
</head>
<body>
		<div style="height:1000px;overflow-x:hidden;">
				<p class="sdf">x:,y:</p>
				<p class="sf">x:,y:</p>
				<div class="2">
						<li id="1"><div style="background-color:red;"></div></li>
						<li id="2"><div style="background-color:blue;"></div></li>
						<li id="3"><div style="background-color:green;"></div></li>
						<li id="4"><div style="background-color:black;"></div></li>
						<li id="5"><div style="background-color:gray;"></div></li>
				</div>
		</div>
		<script>
				$(document).ready(function(){
						$(window).scroll(function(){
					  	 	 var scrollTop = $(this).scrollTop();             	//滚动条距离顶部的高度
					  	 var scrollHeight = $(document).height();           		//当前页面的总高度
					  	 var windowHeight = $(this).height();              		//当前可视的页面高度
					 	 	 if(scrollTop + windowHeight >= scrollHeight){        //距离顶部+当前高度 >=文档总高度 即代表滑动到底部
								alert("上拉加载,要在这调用啥方法?");
							 }else if(scrollTop<=0){			//滚动条距离顶部的高度小于等于0
								alert("下拉刷新,要在这调用啥方法?");
							 }
						});
						var obj;
						var startx;
						var starty;
						var overx;
						var overy;
						for(var i=1;i<=$("li").length;i++){			//为每个li标签添加事件
							obj = document.getElementById(i);		//获取this元素
							evenlistener(obj);		//调用evenlistener函数并将dom元素传入,为该元素绑定事件
						}

						function evenlistener(obj){
							obj.addEventListener(‘touchstart‘, function(event) { 		//touchstart事件,当鼠标点击屏幕时触发
								startx = event.touches[0].clientX;				//获取当前点击位置x坐标
								starty = event.touches[0].clientY;				//获取当前点击位置y坐标
								$(".sdf").text("x:"+startx+",y:"+starty+"")		//赋值到页面显示
							} , false);			//false参数,设置事件处理机制的优先顺序,具体不多说,true优先false
							obj.addEventListener(‘touchmove‘, function(event) { 		//touchmove事件,当鼠标在屏幕移动时触发
										overx = event.touches[0].clientX;			//获取当前点击位置x坐标
										overy = event.touches[0].clientY;			//获取当前点击位置y坐标
										var $this = $(this);			//将dom对象转化为jq对象,由于项目用到jquery,直接使用其animate方法

										if(startx-overx>10){			//左滑动判断,当左滑动的距离大于开始的距离10进入
												$($this).animate({marginLeft:"-55px"},150);			//实现左滑动效果
										}else if(overx-startx>10){		//右滑动判断,当右滑动的距离大于开始的距离10进入
												$($this).animate({marginLeft:"0px"},150);			//恢复
										}
							} , false);
							obj.addEventListener(‘touchend‘, function(event) {			//touchend事件,当鼠标离开屏幕时触发,项目中无用到,举例
									$(".sf").text("x:"+overx+",y:"+overy+"")
							} , false);
						}
				});
		</script>

</body>
</html>

  

时间: 2024-10-10 01:49:24

关于移动端手势滑动和上拉加载下拉刷新简单模拟笔记的相关文章

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

使用dragloader.js插件实现上拉加载/下拉刷新..

在写代码时候有个需求是,在触屏页面,为了加快页面加载速度,案件列表每页展示5条数据: 然后点击更多,展示下一页数据: 但是为了触屏更好的体验,改为往上滑动案件列表,加载下一页数据:就是要实现上拉加载/下拉刷新的效果: 我只用到了 上拉加载: 参考资料:http://blog.csdn.net/xb12369/article/details/39202711 下面是写的demo: html代码: <!DOCTYPE html> <html lang="en"> &

ListView上拉加载下拉刷新

主要用到了这个几个文件,MainActivity是界面的Activity,MyAdapter是ListView的自定义适配,MyListView是自定义带头部LIistView,如果只需要上拉加载就不需要:activity_main.xml是住界面,item.xml是ListView的子布局里面只有一个TextView,listview_footer.xml是listview的加载更多的底部布局,listview_header.xml是listview的头部布局. MainActivity.ja

XML解析及上拉加载下拉刷新

XML解析及上拉加载下拉刷新 1.XML格式 2.GData和XPath遍历 //配置XML库(配置完才能使用) //(1)添加头文件搜索路径 // Header Search Paths-> /usr/include/libxml2 //(2)添加二进制库 // Link library -> lixml2.dylib //(3)源文件添加编译选项 // -fno-objc-arc //(4)添加头文件 // #import "GDataXMLNode.h"*/ XPat

微信小程序上拉加载下拉刷新

微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载的动画可能会是白色背景,会看不清. { "usingComponents": { "annicate": "/components/annicate/index" }, "navigationBarTitleText": &quo

移动端上拉加载下拉刷新

<template> <div class="wrapper" ref="wrapper"> <div class="content" > <div class="refresh" :class="{ativeRefresh:refresh}">刷新</div> <div class="ct-row" v-for=&quo

zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="width=device-width,initial-scale=1.0

RecyclerView 上拉加载下拉刷新

<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/teach_swipe" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/rv_r

上拉加载下拉刷新

老方法,先上效果图: 1.加入下拉刷新 上拉加载的依赖 1 //下拉刷新 上拉加载 2 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-7' 3 implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.4-7' 2.控件的布局文件代码,以下的LinearLayout是内容部分,直接替换即可. 1 <com.scwang.smartrefresh.