js模拟手机滑动页面
来源:互联网 发布:缺血半暗带的算法 编辑:程序博客网 时间:2024/05/28 23:20
引言:最近刚学习了触摸(touch)事件,做了一个模拟手机页面滑动的效果。
主要思路:
在手指放到手机上(触摸开始)时获取触点的坐标。
function touchStart() {
var touch = event.touches[0];
//触摸开始 时 触摸位置坐标值
startX = touch.pageX;
startY = touch.pageY;
}
在手指开始移动时(触摸移动)获取移动时的坐标,
并寻找下一页(遍历所有页面集合,找到当前操作的页面对象,根据className的独特性,找到显示级别最高的)
判断滑动方向—根据滑动方向确定仅次于最高级别页面显示的二级页面
向上滑—寻找最后一页,将下一个操作的对象设为第一页
向下滑—寻找第一页,将下一个操作对象设为第一页
function touchMove() {
var touch = event.touches[0];
//触摸移动时当前坐标
// topY-=speed;
//获取触摸焦点对象
var touch = event.touches[0];
//触摸移动时 当前坐标
moveX = touch.pageX;
moveY = touch.pageY;
topY = moveY - startY;
//循环遍历所有的page页面
for(var i = 0; i < pageItem.length; i++) {
//找到当前要做操作的对象
if(pageItem[i].className == 'page zThisInd') {
if(flag) {
//处理滑动方向
if(topY > 0) {
pageItem[pageItem.length - 1 - this_index].className = 'page zNextInd';
} else {
//向上滑动
if(i == pageItem.length - 1) {
pageItem[0].className = 'page zNextInd';
this_index = -1;
} else {
pageItem[i + 1].className = 'page zNextInd';
this_index = i;
}
// pageItem[i].className = 'page';
}
flag = false;
}
pageItem[i].style.top = topY + 'px';
this_obj = pageItem[i];
}
}
}
手指离开时(触摸结束)
添加计时器,由计时器负责跑完剩下的动画
恢复当前操作对象的className,恢复页面的位置—top,修改下一页
清除定时器
function touchEnd() {
if(moveY == 0) {
console.log('点击事件');
} else {
timer = setInterval(function() {
if(topY >= winHeight || topY <= -winHeight) {
clearInterval(timer);
this_obj.className = 'page'; //修改显示级别最高的对象为普通
this_obj.style.top = '0px';
pageItem[this_index + 1].className = 'page zThisInd'; //把 此次操作,第二级别的页面 改为第一级别,作为 下次操作的 最高级别的对象
flag = true;
return;
}
if(topY > 0) {
topY += speed;
} else {
topY -= speed;
}
this_obj.style.top = topY + 'px';
console.log('1');
}, timer_speed);
}
}
具体代码如下:
- js模拟手机滑动页面
- js 模拟滑动加载
- js手机左右滑动
- css模拟手机滑动开关
- 手机H5页面滑动事件
- 手机页面滑动到下个页面这么写?
- js实现手机网页滑动
- JS判断手机纵向滑动
- js-小米手机上下滑动
- 手机端左右滑动,不用写js(只有页面切换到移动端可以看)
- Chrome模拟手机访问页面
- js模拟页面点击
- js禁止 页面滑动效果
- JS页面锚点滑动
- H5页面模拟app滑动删除
- H5手机页面滑动异步加载数据
- 原声js 模拟微信滑动
- 手机左右上下滑动插件--iscroll.js
- android之壁纸机制
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC(矩阵快速幂+高次幂取模)★ ★
- 3. Longest Substring Without Repeating Characters
- go库中自带的反向代理功能和内网代理
- 面试准备--二叉树的非递归遍历(Java版)
- js模拟手机滑动页面
- 用ADT的FileExplorer查看android手机中的数据库
- LeetCode: Majority Element
- hdu 3555 Bomb 【数位DP】
- 今日get的新技能
- android之壁纸机制
- listview 在不改变数据源的情况下 刷新adapter 的解决办法
- 机器学习实战笔记2(k-近邻算法)
- 安卓模拟器不能联网的解决方案