这篇文章将为大家详细讲解有关在html5中如何实现下拉刷新,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首页css+html部分:

*{margin:0;padding:0;list-style:none;}body{display:flex;justify-content:center;align-items:center;}.one{width:4rem;height:7rem;border:1pxsolidred;font-size:0.35rem;box-sizing:border-box;overflow-y:auto;}.kl{position:relative;}.lis{width:100%;height:1rem;line-height:1rem;text-align:center;background:red;}.lis:nth-child(2n+1){background:pink;}.scroll{height:100%;overflow:auto;-webkit-overflow-scrolling:touch;}.di{position:relative;color:#c8c9cc;font-size:0;vertical-align:middle;}.k{width:0.5rem;height:0.5rem;display:inline-block;max-width:100%;max-height:100%;animation:theanimation1slinearinfinite;}.us{position:absolute;top:0;left:0;width:100%;height:100%;color:rgb(25,137,250)}.us:before{display:block;width:2px;height:25%;margin:0auto;background-color:currentColor;border-radius:40%;content:'';}.us:nth-child(1){-webkit-transform:rotate(30deg);transform:rotate(30deg);opacity:1;}.us:nth-child(2){-webkit-transform:rotate(60deg);transform:rotate(60deg);opacity:0.9375;}.us:nth-child(3){-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0.875;}.us:nth-child(4){-webkit-transform:rotate(120deg);transform:rotate(120deg);opacity:0.8125;}.us:nth-child(5){-webkit-transform:rotate(150deg);transform:rotate(150deg);opacity:0.75;}.us:nth-child(6){-webkit-transform:rotate(180deg);transform:rotate(180deg);opacity:0.6875;}.us:nth-child(7){-webkit-transform:rotate(210deg);transform:rotate(210deg);opacity:0.625;}.us:nth-child(8){-webkit-transform:rotate(240deg);transform:rotate(240deg);opacity:0.5625;}.us:nth-child(9){-webkit-transform:rotate(270deg);transform:rotate(270deg);opacity:0.5;}.us:nth-child(10){-webkit-transform:rotate(300deg);transform:rotate(300deg);opacity:0.4375;}.us:nth-child(11){-webkit-transform:rotate(330deg);transform:rotate(330deg);opacity:0.375;}.us:nth-child(12){-webkit-transform:rotate(360deg);transform:rotate(360deg);opacity:0.3125;}@keyframestheanimation{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>下拉刷新</title><linkrel="stylesheet"type="text/css"href="botm_x.css"/></head><styletype="text/css"></style><body><divclass="one"><divclass="kl"><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li><liclass="lis">这是一个内容</li></div></div></body><scripttype="text/javascript"src="适配.js"></script><scripttype="text/javascript"src="下拉刷新.js"></script></html>

这里是模拟了一个简单的下拉刷新的模板。

接下来是js部分也是最主要的部分:

window.loading=function(){varsin=0;varsel=null;//計時器varbr=true;//判斷是否請求完所有的數據varbl=true;//判斷是否iosanvarall_H;//下拉高度varxl_xu,sl_xu;//下拉選和上拉選varstr;letbox=document.getElementsByClassName('one')[0]//獲取到整個的bodyletbox_childer=document.getElementsByClassName('kl')[0]letli=document.querySelectorAll('li')//所有的libox.addEventListener('touchstart',start)//摁下事件box.addEventListener('scroll',(e)=>scrol(e))//移動事件box.addEventListener('touchend',end)//摁下離開事件//box.addEventListener('touchmove',move_lin)//拖拽事件functionscrol(e){//滾動事件letmove_scroll=br&&bl?e.target.scrollTop:NaNall_H=box.clientHeight+move_scrollif(all_H>=e.target.scrollHeight){//觸底了bl=falseif(sin^3){++sin}else{if(xl_xu){return}establish(2)returnfalse}br=false//創建一個節點來顯示所示內容establish();}}functionend(){//鼠標離開事件bl=true}functionstart(e){//摁下事件bl=true}functionestablish(a=0){//創建dom加載元素if(a==2){//說明是最後一頁xl_xu=document.createElement('div');xl_xu.style.textAlign='center'xl_xu.innerHTML='已經最後一頁了'box_childer.appendChild(xl_xu)return}if(xl_xu){//說明有那就先刪除box_childer.removeChild(xl_xu)}xl_xu=document.createElement('div')xl_xu.style.textAlign='center'xl_xu.innerHTML=strbox_childer.appendChild(xl_xu)sel=setTimeout(()=>{box_childer.removeChild(xl_xu)xl_xu=nullclearTimeout(sel);leta=Array.from({length:5},_=>document.createElement('li'))for(leti=0;i<a.length;i++){a[i].classList.add('lis')box_childer.appendChild(a[i])}sel=nullbr=true},1500)}functionmove_lin(e){//托轉事件if(!br){vareve=e||eventvartouch=eve.touches[0]varclientW=box.scrollWidth;varclientH=box.clientHeightvarstart_y=(750/clientW)*(touch.pageY)/75//距离当前页面的高度varstart_x=(750/clientW)*(touch.pageX)/75//距离当前页面的宽度console.log(start_y,start_x)}//console.log('托轉了',box_childer,all_H)}(function(){str=`<divclass="di"'><divclass="k"><liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li>这里我写了一个下拉刷新的deom<liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li><liclass="us"></li></div></div>`})()}()

整个代码的思想不是简单意义上的根据滚动长度和实际高度做判断,以为开头说过ios这方面会有弹簧的一个特性,所以不能这么判断,我这边通过监听摁下松开事件来多上了一层锁,这样更加的安全和高效。

关于“在html5中如何实现下拉刷新”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。