网页|利用touch实现下拉刷新

简介: 网页|利用touch实现下拉刷新

1功能介绍

下拉刷新在常见的手机app上大多都有运用。下拉刷新即向下拉重新加载、刷新。下拉刷新在下拉到松手的过程中,经历了三个状态分别是:当前手势滑动位置与初始位置差值大于零时,提示正在进行下拉刷新操作。之后当下拉到一定值时,显示松手释放后的操作提示。最后当下拉到达设定最大值松手时,执行回调,提示正在进行更新操作。如下图则为下拉刷新的实现效果:


图1 整体效果图


2下拉刷新的实现原理

在实现下拉刷新的过程中会用到touch事件。其中,touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。touchend事件:当手指从屏幕上离开的时候触发。

touchcancel事件:当系统停止跟踪触摸的时候触发监听原生touchstart事件,记录其初始位置的值,并监听原生touchmove事件,记录并计算当前滑动的位置值与初始位置值的差值,大于0表示向下拉动,并借助CSS3的translate属性使元素跟随手势向下滑动对应的差值,同时也应设置一个允许滑动的最大值。监听原生touchend事件,若此时元素滑动达到最大值,则触发callback,同时将translate重设为0,元素回到初始位置。


3页面加载的实现

h5代码如下:

<!—html代码  下拉刷新页面 -->

         <div>

                <span id="text"></span>

                <span id='move'></span>

            </div>

利用css对样式进行设置调整,主要还是用到了动画效果。主要样式代码如下:

.refresh #move{

     width: 20px;

     height: 20px;

     /* border: 1px solid red; */

     position: absolute;

     margin-left: 10px;

     top: 63%;

     

}

.refresh .square {

     width: 12px;

     height: 12px;

     border-radius: 4px;

     background-color: #cbcccc;

}

 

.square {

     animation: loadingG 1.5s cubic-bezier(.17,.37,.43,.67) infinite;

}

 

 

@keyframes loadingG {

     0% {transform: translate(0,0) rotate(0deg);}

     50% {transform: translate(70px,0) rotate(360deg);}

     100% {transform: translate(0,0) rotate(0deg);}

}

利用JavaScript实现下拉刷新的效果:

// 下拉刷新页面

//onload是window窗口对象的事件属性,语句是把“匿名函数”赋值给window的onload事件属性,当window加载完成时会触发onload事件,也就触发了“匿名函数”,执行函数体内的语句。

window.onload = function () {

     var Y ,newY;

     // 监听页面touch事件

     var touch = document.getElementsByClassName('touch')[0];

//选择全部的类

     touch.addEventListener('touchstart',function (e) {//侦听事件bai并处理相应的函数

         var e = e || window.event;

         Y = e.changedTouches[0].pageY;//触点坐标选取

         // console.log(Y);

     });

     touch.addEventListener('touchmove',function () {

         var e = e ||window.event;

         newY = e.changedTouches[0].pageY;

         // console.log(newY);

         touchmove(Y,newY);

     })

 touch.addEventListener('touchend',function  (e) {

         var e = e || window.event;

         newY = e.changedTouches[0].pageY;

         // console.log(newY);

         touchend(Y,newY);

     });

}

function touchmove (Y,newY) {

     console.log(Y +"||"+newY)

     var distance = newY -Y;

     if(distance>20){

         $(‘.header’).animate({ //动画效果

            ‘opacity’ : 0.8//透明度

         },100);

         // console.log(distance);

         // document.getElementsByClassName('hrader')[0].style.opacity = 0.8;

         var refresh = document.getElementsByClassName('refresh')[0];

         distance = distance > 100 ? 100 :distance;

         $('.refresh').css('height',distance+"px");

        document.getElementById('text').innerHTML= "释放立即刷新..."

         $('#text').css('line-height',distance+40+"px");

     }

}

function touchend(Y,newY){

     var distance = newY -Y;

     if(distance>20){

    //bai用来设置或获取位于对象起始和结du束标签内的HTML     document.getElementById('text').innerHTML=  "正在刷新";

         document.getElementById('move').innerHTML="<div></div>"

         setTimeout(function(){

            location.reload();

         },2000);

     }

 

 

目录
相关文章
|
弹性计算
2024年阿里云免费云服务器及学生云服务器申请教程参考
2024年阿里云继续推出免费学生云服务器与免费试用云服务器,其中学生云服务器最长可免费7个月(1个月首次领用+6个月免费续领),免费试用云服务器分为个人免费云服务器和企业免费云服务器,最长免费试用时长是3个月。下面小编来介绍一下阿里云免费云服务器及学生云服务器的申请教程。
|
JSON 前端开发 JavaScript
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
543 0
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(上)
|
移动开发 算法 调度
【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
贪心算法是一种非常常见的算法,它的简单和高效性使其在实际应用中被广泛使用。 贪心算法的核心思想是在每一步都采取当前状态下最优的选择,而不考虑未来可能产生的影响。虽然贪心算法不能保证总是得到最优解,但在很多情况下,它可以获得很好的结果。 本篇文章将介绍贪心算法的基本概念和一些经典应用,以及如何通过贪心算法来解决一些实际问题。希望通过本文的阅读,读者可以对贪心算法有更加深刻的理解,并能够在实际问题中应用贪心算法来得到更好的解决方案。 让我们暴打贪心算法吧!
6673 0
|
7月前
|
缓存 自然语言处理 算法
彻底卸载流氓软件教程,亲测有效!流氓软件彻底卸载软件
本文介绍了多款彻底卸载流氓软件的工具,如 Revo Uninstaller Pro、HiBit Uninstaller、Uninstall Tool 和 SoftCnkiller。这些软件具备强制卸载、残留清理、注册表扫描等功能,能有效应对鲁大师、2345 等难以删除的流氓程序。文章还分享了卸载操作步骤及用户使用体验,帮助用户解决电脑中弹窗广告、隐私窃取等问题,提升系统运行效率。
5474 0
彻底卸载流氓软件教程,亲测有效!流氓软件彻底卸载软件
|
人工智能
协同育人项目申报步骤
协同育人项目申报步骤简介:高校教师需先注册账号,登录后在“产学合作”中查看企业项目指南。确定意向后,在“企业项目列表”页面申请并填写表单,提交后关注审核进展。审核通过后,高校与企业签署合作协议,明确项目内容及验收标准等。具体流程可参考平台发布的《2024年产学合作协同育人项目高校申报说明》。
|
人工智能 开发框架 自然语言处理
基于 Qwen-Agent 与 OpenVINO™ 构建本地 AI 智能体
Qwen2 是阿里巴巴集团 Qwen 团队研发的大语言模型和大型多模态模型系列。Qwen2 具备自然语言理解、文本生成、视觉理解、音频理解、工具使用、角色扮演、作为 AI Agent 进行互动等多种能力。
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
476 6
|
监控 JavaScript API
使用 requestAnimationFrame 提升 web 性能
使用 requestAnimationFrame 提升 web 性能
400 1
|
JavaScript 前端开发
使用js,html,css实现歌词滚动的效果
使用js,html,css实现歌词滚动的效果
351 0
|
JSON 前端开发 JavaScript
Fetch API与Ajax请求
Fetch API是JavaScript的一种新方法,用于网络请求,提供简洁的Promise-based语法和更多功能,如处理头、取消请求及跨域支持,比Ajax更强大。尽管不完全替代Ajax,尤其在老浏览器或需要底层控制时,Fetch API仍是现代浏览器中获取资源的优选工具。例如,以下代码展示了如何使用Fetch API进行GET和POST请求。

热门文章

最新文章