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

这篇文章给大家介绍的内容是关于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实现移动端下拉刷新(原理和代码)的详细内容,更多请关注我!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容