当前位置: 首页 > ops >正文

【四种JavaScript 实现页面底部回到顶部功能的实现方式】

JavaScript 实现页面底部回到顶部功能

以下是几种实现页面底部回到顶部功能的方法:

方法一:基础实现(点击按钮滚动到顶部)

<!DOCTYPE html>
<html>
<head><style>#backToTop {position: fixed;bottom: 20px;right: 20px;display: none;width: 50px;height: 50px;background-color: #333;color: white;text-align: center;line-height: 50px;border-radius: 50%;cursor: pointer;}</style>
</head>
<body><!-- 页面内容 --><div style="height: 2000px;">滚动测试内容...</div><!-- 回到顶部按钮 --><div id="backToTop"></div><script>const backToTopBtn = document.getElementById('backToTop');// 监听滚动事件window.addEventListener('scroll', function() {if (window.pageYOffset > 300) { // 滚动超过300px显示按钮backToTopBtn.style.display = 'block';} else {backToTopBtn.style.display = 'none';}});// 点击回到顶部backToTopBtn.addEventListener('click', function() {window.scrollTo({top: 0,behavior: 'smooth' // 平滑滚动});});</script>
</body>
</html>

方法二:更流畅的动画效果

// 使用requestAnimationFrame实现更流畅的滚动
function scrollToTop(scrollDuration) {const scrollStep = -window.scrollY / (scrollDuration / 15);const scrollInterval = setInterval(function() {if (window.scrollY !== 0) {window.scrollBy(0, scrollStep);} else {clearInterval(scrollInterval);}}, 15);
}// 使用示例
document.getElementById('backToTop').addEventListener('click', function() {scrollToTop(500); // 500ms内滚动到顶部
});

方法三:同时支持底部和顶部

// 同时支持滚动到底部和回到顶部
function toggleScrollButtons() {const backToTopBtn = document.getElementById('backToTop');const scrollToBottomBtn = document.getElementById('scrollToBottom');if (window.pageYOffset > 300) {backToTopBtn.style.display = 'block';scrollToBottomBtn.style.display = 'none';} else if (window.innerHeight + window.pageYOffset >= document.body.offsetHeight - 100) {backToTopBtn.style.display = 'none';scrollToBottomBtn.style.display = 'block';} else {backToTopBtn.style.display = 'none';scrollToBottomBtn.style.display = 'none';}
}window.addEventListener('scroll', toggleScrollButtons);// 滚动到底部按钮
document.getElementById('scrollToBottom').addEventListener('click', function() {window.scrollTo({top: document.body.scrollHeight,behavior: 'smooth'});
});

方法四:使用CSS自定义属性控制

:root {--back-to-top-size: 50px;--back-to-top-color: #333;--back-to-top-hover-color: #555;
}#backToTop {position: fixed;bottom: 20px;right: 20px;display: none;width: var(--back-to-top-size);height: var(--back-to-top-size);background-color: var(--back-to-top-color);color: white;text-align: center;line-height: var(--back-to-top-size);border-radius: 50%;cursor: pointer;transition: background-color 0.3s;
}#backToTop:hover {background-color: var(--back-to-top-hover-color);
}

注意事项

按钮默认隐藏,滚动一定距离后显示
添加平滑滚动效果提升用户体验
考虑移动端触摸事件的兼容性
可以添加箭头图标或自定义样式
对于长页面,可以考虑添加滚动进度指示器
以上代码可以根据实际项目需求进行调整和组合使用。

http://www.xdnf.cn/news/8883.html

相关文章:

  • DeepSeek 赋能教育游戏化:AI 重构学习体验的技术密码
  • Qt C++ GUI编程进阶:多窗口交互与事件机制深度解析
  • 《软件工程》第 6 章 - 软件设计概论
  • 数据结构第3章 线性表 (竟成)
  • 职坐标IT培训:硬件嵌入式与AI芯片开发实战
  • ESP8266+STM32 AT驱动程序,心知天气API 记录时间: 2025年5月26日13:24:11
  • 人工智能是桥梁,不是目标
  • C++之STL入门
  • MySQL数据库零基础入门教程:从安装配置到数据查询全掌握【MySQL系列】
  • 易语言模拟真人鼠标轨迹算法
  • AI时代新词-Transformer架构:开启AI新时代的关键技术
  • 大语言模型 19 - MCP FastAPI-MCP 实现自己的MCP服务 快速接入API
  • [ARM][架构] 01.ARMv7 特权等级与核心寄存器
  • MMA: Multi-Modal Adapter for Vision-Language Models论文解读
  • 华为云Flexus+DeepSeek征文 | 体验简单高效的模型推理开通之旅
  • 华为OD机试真题——传递悄悄话(二叉树最长路径问题)(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 微软技术赋能:解锁开发、交互与数据潜力,共探未来创新路
  • SDL2常用函数:SDL_BlitSurfaceSDL_UpdateWindowSurface 数据结构及使用介绍
  • 深度解析 vm.max_map_count:用途、原理与调优建议
  • 篇章三 数据结构——前置知识(三)
  • 我们是如何为 ES|QL 重建自动补全功能的
  • 常见的css布局单位
  • 深度解析C语言数据类型:从char到double的存储秘密
  • Flutter图片Image、本地图片、程程图片、圆片剪切、圆形图片
  • 小米玄戒O1架构深度解析(一):十核异构设计与缓存层次详解
  • Vue3解决路由缓存问题
  • 剑指offer11_矩阵中的路径
  • 鸿蒙OSUniApp 制作动态生成的轮播图#三方框架 #Uniapp
  • MyBatis入门:快速搭建数据库操作框架 + 增删改查(CRUD)
  • 华为云Flexus+DeepSeek征文|依托华为云生态:Dify 平台 AI Agent 开发的场景化实践