移动端touch事件实现页面弹动--小插件
动手之前的打盹
- 说实话真的是好久没有更新博客了,最近一直赶项目,身心疲惫;最关键的是晚上还要回去上一波王者,实在是忙啊!
- 这周下来,清闲了些许,或许是因为要到国庆的缘故吧,大家都显得无精打采。俗话说的好: ”身在曹营,心在汉!“。早早的就去为祖国庆生去了,哈哈。
- 是时候表演真正的技术了,那么先来一杯coffee,就是那种像屎尿混合在一起的颜色的饮料;要问什么味道,哈哈,一周没洗的脚被一双一年没洗的袜子包着,捂在密不透风的旅游鞋里,散发出来的汗液的味道。
小页面的搭建
- 搭建一个网页,注:改页面是移动端页面,请在浏览器调成移动端状态测试
- 将body设置为overflow:hidden,很奇怪吧,不是overflow:scroll 吗? 对,不是,我们是要通过touch事件来模拟滑动,然后控制translate,来使页面弹动
- body里面的内容要比body高,这样在滑动整个页面的时候就会出现滑倒顶部或底部继续滑动,页面会弹回底部或顶部,即bounce页面效果,有点像App
- 最后的最后,记得要在浏览器上调成移动端模式测试奥,touch事件只支持移动端
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
<title>还有谁</title>
</head>
<body style="height: 100%; overflow: hidden;">
<div id="main" style="height: 813px; width: 100%;background-color: #c1c1c1;">
</div>
</body>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</html>
正所谓青铜的操作,王者的思想,是时候拿一波五杀了,哈哈哈,还有谁
- 关键还是js,是吧,贝斯,架子鼓弄得再好,没鸟用,什么有用,主唱啊,哈哈哈
- 大家好,我是人见人爱,欢迎车震们来解说这一期的代码
- 话不多说,先上代码;上图不上码,菊花万人捅
var startX,//触摸时的坐标
startY,
x, //滑动的距离
y,
aboveY=0;
var dom = document.getElementById('main');
var html_h = $("html").height();
var dom_h = $("#main").height();
//touchStart事件
dom.addEventListener('touchstart',function(e){
e.preventDefault();
var touch=e.touches[0];
startY = touch.pageY;
},false);
//touchmove事件
dom.addEventListener('touchmove',function(e){
e.preventDefault();
var touch = e.touches[0];
y = touch.pageY - startY;
// console.log(endY);
$('#main').css("transform","translate(0px,"+(aboveY+y)+"px) translateZ(0px)");
$('#main').css("transition-timing-function","cubic-bezier(0.1, 0.57, 0.1, 1)");
$('#main').css("transition-duration","0ms");
},false);
//touchend事件
dom.addEventListener('touchend',function(e){
e.preventDefault();
var arr = $("#main").css("transform").split(',');
aboveY = parseInt(arr[5].substr(0,arr[5].length-1));
if(arr[5].substr(0,arr[5].length-1)>0){
$('#main').css("transform", "translate(0px, 0px) translateZ(0px)");
$('#main').css("transition-timing-function","cubic-bezier(0.1, 0.57, 0.1, 1)");
$('#main').css("transition-duration","600ms");
aboveY = 0;
} else if((html_h-dom_h)>aboveY) {
$('#main').css("transform", "translate(0px, "+(html_h-dom_h)+"px) translateZ(0px)");
$('#main').css("transition-timing-function","cubic-bezier(0.1, 0.57, 0.1, 1)");
$('#main').css("transition-duration","600ms");
aboveY = (html_h-dom_h);
}
},false);
- 那么接下来,我为大家简单的介绍一下代码的作用
- touch事件不用多逼逼,大家都懂,那么他是如何模拟滑动的呢?,没错就是
transform:translate(0px, 888px)这个css3属性,明白了吧,通过改变这个属性,从而改变了html模块的位置 - 那么大家又想问了,这个
transition-timing-function是干嘛用的,说白了就是个运动曲线,赛贝尔曲线,哎,懂了吧,就是规定你这个html模块如何运动的 - 时间呢?得有吧,
transition-duration这不就来了吗?哈哈,简单吧,都是css3,社会我三哥,人丑话不多
强行插波广告,哈哈,又到了大家最喜欢的广告环节
- 下面这段代码就是监听touch事件结束后页面上被滚动模块的位置,若是在顶部或底部,便将他们来个运动,就是回到顶部或底部,这样一来,我们将页面来出去的超过窗口的部位就又弹回来了,有运动时间,还有运动曲线,不用想了,就想美女的身材一样,好看
- aboveY是干什么的,是记录上一次页面滚动的位置,便于下一次继续从上一次的位置开始滚动
- 其他的部分,我想大家仔细看看,应该就明白了,正所谓,看直播上王者,我相信,你们可以的,你看,你看,看不懂,就盯着它看,代码害羞了,你就看懂了
if(arr[5].substr(0,arr[5].length-1)>0){
$('#main').css("transform", "translate(0px, 0px) translateZ(0px)");
$('#main').css("transition-timing-function","cubic-bezier(0.1, 0.57, 0.1, 1)");
$('#main').css("transition-duration","600ms");
aboveY = 0;
} else if((html_h-dom_h)>aboveY) {
$('#main').css("transform", "translate(0px, "+(html_h-dom_h)+"px) translateZ(0px)");
$('#main').css("transition-timing-function","cubic-bezier(0.1, 0.57, 0.1, 1)");
$('#main').css("transition-duration","600ms");
aboveY = (html_h-dom_h);
}
最后的最后的最后,使劲上下拉动页面,那个灰色的模块就会出现弹动效果了(bounce页面效果),记得要在浏览器的移动端奥
移动端touch事件实现页面弹动--小插件的更多相关文章
- H5案例分享:移动端touch事件判断滑屏手势的方向
移动端touch事件判断滑屏手势的方向 方法一 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touchmove事件时,在获取此时手指的横坐标 ...
- kissui.scrollanim页面滚动动画库插件
简介 kissui.scrollanim是一款实用的纯JS和CSS3页面滚动动画库插件.通过该插件可以使元素进入浏览器视口的时候,展示指定的CSS3动画效果. 下载地址及演示 在线演示 在线下载 安装 ...
- 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法
这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...
- 原生js移动端touch事件实现上拉加载更多
大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...
- 移动端touch事件 || 上拉加载更多
前言: 说多了都是泪,在进行项目开发时,在上拉加载更多实现分页效果的问题上,由于当时开发任务紧急,所以就百度找了各种移动端的上拉下拉 实现加载更多的插件.然后就留下了个坑:上拉加载的时候会由于用户错误 ...
- 移动端 Touch 事件
在移动端页面开发时,常常会用到touch事件,比如左滑右滑的轮播等.常用的触摸事件有touchstart,touchmove,touchend. 每个事件包含下面三个用于跟踪虎摸的属性: touche ...
- 移动端 touch 事件的originalEvent
对于移动端的触摸事件,我们通过touchstart.touchmove.touchend实现,PC端一般使用mousedown.mousemove.mouseup实现. 我们获取事件坐标,原生js获取 ...
- 移动端Touch事件基础
1.三个常用的移动端事件 ontouchstart 手指按下时触发 ontouchmove 手指移动时触发 ontouchend 手动抬起时触发 注意:这些事件当作事件属性使用时,不兼容谷歌浏览器. ...
- 移动端touch事件滚动
本来想用在北京欢乐谷手机上用touch事件来模拟局部左右内容滚动里,但在touchmove上下滚动时由于禁止了默认事件而body滚动条不能滚动,虽然可以根据touchmove的坐标来判断方向,但体验效 ...
随机推荐
- k-临近算法学习
本章主要内容: k-临近算法是通过对象本身的特征将对象划分到某一类型中去,比如电影中的题材类型的分类是,可能就会考虑到电影中出现的镜头出现的次数的多少将电影划分为动作电影,爱情电影等等,本次的随笔参考 ...
- Kettle6.0表输入连接数据库
kettle6.0表输入我们需要从数据中获取数据的时候,需要和数据库建立连接,简单的说下步骤: 1.双击表输入: 2.点击"新建",输入参数值: 注意:数据库用户名可以通过sql进 ...
- Spring中@Value标签的使用详解
1.@Value标签 由于Spring对通过IOC的方式对对象进行统一管理,所以对任何对象而言,其生成方法均由Spring管理.传统的方法是通过XML配置每一个Bean,并对这个Bean的所有Fiel ...
- Nginx keepalived实现高可用负载均衡详细配置步骤
Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...
- ★浅谈Spanking情节
- 201521123107 《Java程序设计》第7周学习总结
第7周作业-集合 1.本周学习总结 2.书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: public boolean contains( ...
- 【Alpha】Daily Scrum Meeting——Day3
站立式会议照片 1.本次会议为第三次 Meeting会议: 2.本次会议于早上9:40在陆大楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 每个人的工作分配 成 员 昨天已完成 ...
- 12个Sublime Text应用技巧和诀窍
本文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text选择文本的快捷键 ...
- 201521123093 java 第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- 201521123044 《Java程序设计》第11周学习总结
1. 本章学习总结 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问, ...