原生js实现返回顶部缓冲效果

发布时间 - 2026-01-10 22:37:40    点击率:

运行原理

通过定时器30毫秒执行一次滚动条上升,每次上升的高度为当前高度的80%,这样就达到了上升缓冲的动画效果。

判断当滚动条高度超过一屏时,按钮显示,默认隐藏

知识要点

scrollTop//获取滚动条高度 需要写兼容
clientHeight//可视窗口高度 需要写兼容
setInterval//定时器
window.onscroll//滚动触发事件

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:courier new,courier,monospace;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:none;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
.clear{clear: both;float: none;height: 0;overflow: hidden;}
.bg{background:#9B1BC5; width: 1000px; height: 3000px; margin: 0 auto;}
#gotop{width: 50px; height: 50px; background:#5490F5; color: #fff; position: fixed; left: 50%; bottom: 30px; text-align: center; font-family: "Microsoft Yahei",tahoma,arial; font-size: 14px; cursor: pointer; margin-left: 520px; display: none;}
#gotop span{display: block;padding: 5px;}
</style>
</head>
<body>
<div class="bg"></div>
<div id="gotop"><span>返回顶部</span></div>
<script type="text/javascript">
 //在页面加载完后立即执行多个函数方案
 function addloadEvent(func){
  var oldonload=window.onload;
  if(typeof window.onload !="function"){
   window.onload=func;
  }
  else{
   window.onload=function(){
    if(oldonload){
     oldonload(); 
    }
    func();
   }
  }
 }
 //在页面加载完后立即执行多个函数方案结束
 addloadEvent(b);
 function b(){
  var gotop=document.getElementById("gotop");  
  var timer;
  var tf=true;
  //滚动触发
  window.onscroll=function(){
   //获取滚动条高度
   var ostop=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
   //获取窗口可视区域高度
   //console.log(ostop)
   var ch=document.documentElement.clientHeight||document.body.clientHeight;
   //如果页面超过一屏高度按钮显示,否则隐藏
   if(ostop>=ch){
    gotop.style.display="block";
   }else{
    gotop.style.display="none";
   }
   //
   if(!tf){
    clearInterval(timer);    
   }
    tf=false;
  }
  //点击触发
  gotop.onclick=function(){
   //创建定时器
   timer=setInterval(function(){
    //获取滚动条高度
    var ostop=document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    //每次上升高度的20%
    var speed=Math.ceil(ostop/5);
    //每次上升当前高度的80%
document.documentElement.scrollTop=document.body.scrollTop=ostop-speed;
    //如果高度为0,清除定时器
    if(ostop==0){
     clearInterval(timer);
    } 
    tf=true;
   },30);   
  }
 }
</script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# 原生js返回顶部  # js实现返回顶部  # 返回顶部  # 一个简单的弹性返回顶部JS代码实现介绍  # js+JQuery返回顶部功能如何实现  # javascript返回顶部效果(自写代码)  # js简单的点击返回顶部效果实现方法  # JS返回顶部实例代码  # javascript简单实现跟随滚动条漂浮的返回顶部按钮效果  # javascript实现博客园页面右下角返回顶部按钮  # js实现返回顶部效果  # jQuery实现返回顶部功能适合不支持js的浏览器  # js实现带有动画的返回顶部  # 滚动条  # 多个  # 完后  # 加载  # 就达  # fieldset  # form  # li  # legend  # input  # button  # textarea  # hr  # blockquote  # ul  # ol  # dd  # dl  # dt  # kbd 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  如何快速生成专业多端适配建站电话?  Laravel如何发送系统通知?(Notification渠道示例)  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  个人摄影网站制作流程,摄影爱好者都去什么网站?  详解jQuery中基本的动画方法  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  EditPlus中的正则表达式实战(6)  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何快速搭建高效可靠的建站解决方案?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  如何基于PHP生成高效IDC网络公司建站源码?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何配置任务调度?(Cron Job示例)  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在Tomcat中配置并部署网站项目?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何快速生成凡客建站的专业级图册?  Laravel如何使用withoutEvents方法临时禁用模型事件  香港服务器如何优化才能显著提升网站加载速度?  详解Android——蓝牙技术 带你实现终端间数据传输  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  音响网站制作视频教程,隆霸音响官方网站?  Laravel Session怎么存储_Laravel Session驱动配置详解  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Android okhttputils现在进度显示实例代码  公司门户网站制作流程,华为官网怎么做?  如何在景安云服务器上绑定域名并配置虚拟主机?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  php 三元运算符实例详细介绍  怎么用AI帮你为初创公司进行市场定位分析?