码迷,mamicode.com
首页 > 移动开发 > 详细

html5实现移动端下拉刷新(原理和代码)

时间:2020-05-23 16:48:16      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:orm   sel   viewport   charset   常用   列表   ini   参考   selector   

这篇文章给大家介绍的内容是关于html5实现移动端下拉刷新(原理和代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

 

打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)

 

移动端的下拉刷新是一个很常见的功能,也有许多开源库实现了这个功能,不过为了学习,还是先自己写一个例子学习一下。其中用到了一些touch事件和一些DOM属性CSS3属性。直接上代码,代码里面有注释。

<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>Document</title>
 <style type="text/css">
 html,
 body,
 header,
 p,
 main,
 p,
 span,
 ul,
 li {
 margin: 0;
 padding: 0;
 }
 
 #refreshContainer li {
 background-color: #eee;
 margin-bottom: 1px;
 padding: 20px 10px;
 }
 
 .refreshText {
 position: absolute;
 width: 100%;
 line-height: 50px;
 text-align: center;
 left: 0;
 top: 0;
 transform: translateY(-50px);
 }
 </style>
</head>
 
<body>
 <main class="parent">
 <p class="refreshText"></p>
 <ul id="refreshContainer">
 <li>111</li>
 <li>222</li>
 <li>333</li>
 <li>444</li>
 <li>555</li>
 <li>111</li>
 <li>222</li>
 <li>333</li>
 <li>444</li>
 <li>555</li>
 <li>111</li>
 <li>222</li>
 <li>333</li>
 <li>444</li>
 <li>555</li>
 </ul>
 </main>
 <script type="text/javascript">
 window.onload = function(){
 //1.获取到列表的dom,刷新显示部分的dom,列表父容器的dom
 let container = document.querySelector(‘#refreshContainer‘);
 let refreshText = document.querySelector(‘.refreshText‘);
 let parent = document.querySelector(‘.parent‘);
 
 //2.定义一些需要常用的变量
 let startY = 0;//手指触摸最开始的Y坐标
 let endY = 0;//手指结束触摸时的Y坐标
  
 //3.给列表dom监听touchstart事件,得到起始位置的Y坐标
 parent.addEventListener(‘touchstart‘,function(e){
 startY = e.touches[0].pageY;
 });
 //4.给列表dom监听touchmove事件,当移动到一定程度需要显示上面的文字
 parent.addEventListener(‘touchmove‘,function (e) { 
 if(isTop() && (e.touches[0].pageY-startY) > 0){
 console.log(‘下拉了‘);
 refreshText.style.height = "50px";
 parent.style.transform = "translateY(50px)";
 parent.style.transition = "all ease 0.5s";
 refreshText.innerHTML = "释放立即刷新...";
 }
 });
 //5.给列表dom监听touchend事件,此时说明用户已经松开了手指,应该进行异步操作了
 parent.addEventListener(‘touchend‘,function (e) { 
 if(isTop()){
 refreshText.innerHTML = "正在刷新...";
 setTimeout(function(){
 parent.style.transform = "translateY(0)";
 console.log(‘成功刷新‘);
 },2000)
 }
 return;
 })
 function isTop(){
 var t = document.documentElement.scrollTop||document.body.scrollTop;
 return t === 0 ? true : false;
 }
 
 }
 </script>
</body>
 
</html>

  

  • 其中用到了CSS3中的transform和animate。因为既然都是移动端了,这些东西基本上都支持了。
  • 具体看代码吧,注释也有。本文只是讲解原理,后续将会对其进行封装成一个对象。方便直接调用。

以上就是html5实现移动端下拉刷新(原理和代码)的详细内容,更多请关注我!!!

html5实现移动端下拉刷新(原理和代码)

标签:orm   sel   viewport   charset   常用   列表   ini   参考   selector   

原文地址:https://www.cnblogs.com/xsd1/p/12942814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!