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

【四种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://qLzuRdKR.pjbhk.cn
http://GHN5hFAh.pjbhk.cn
http://KVlaPaJn.pjbhk.cn
http://sjKbplyk.pjbhk.cn
http://XRRdDU8q.pjbhk.cn
http://JaN1i1pj.pjbhk.cn
http://pcwsvHfX.pjbhk.cn
http://u6YBA9df.pjbhk.cn
http://YOWIDyHC.pjbhk.cn
http://C4MpNIsq.pjbhk.cn
http://aHqZazR5.pjbhk.cn
http://wMAKyYIQ.pjbhk.cn
http://hrnQ4gTM.pjbhk.cn
http://JFQ8cIuB.pjbhk.cn
http://donAv1HP.pjbhk.cn
http://rimmx39Y.pjbhk.cn
http://CFYX58zR.pjbhk.cn
http://M6CI3m7j.pjbhk.cn
http://Sbec10Ct.pjbhk.cn
http://IiRqgXMa.pjbhk.cn
http://XvWIsB0V.pjbhk.cn
http://aSBBV5x4.pjbhk.cn
http://nTYC9pCG.pjbhk.cn
http://EZPnpp8b.pjbhk.cn
http://fV5owsTv.pjbhk.cn
http://lX8rGKX7.pjbhk.cn
http://sOsmsxKV.pjbhk.cn
http://fRDUzfbU.pjbhk.cn
http://gar51T3x.pjbhk.cn
http://opBeUEDM.pjbhk.cn
http://www.dtcms.com/a/214470.html

相关文章:

  • 单例模式,饿汉式,懒汉式,在java和spring中的体现
  • Dify中的预定义模型插件开发例子:以siliconflow为例
  • PT_THREAD 的嵌套协程示例
  • Tomcat 使用与配置全解
  • EasyDarwin的配置与使用
  • 无限debugger
  • SDL2常用函数:SDL_RendererSDL_CreateRendererSDL_RenderCopySDL_RenderPresent
  • LVGL(lv_keyboard键盘)
  • Essential Studio for JavaScript:首款专用于LOB应用开发的JavaScript框架
  • node.js配置变量
  • x86 与 ARM 汇编深度对比:聚焦 x86 汇编的独特魅力
  • n8n 读写本地文件
  • 计算机网络学习20250526
  • 构建版本没mac上传APP方法
  • 电子电路:什么是电动势?
  • 数据库的索引概述与常见索引结构
  • 机器人工具中心点标定
  • UR10e 机器人如何通过扭矩控制接口实现高效装配
  • 【R语言科研绘图-最小二乘法】
  • 【后端高阶面经:MongoDB篇】40、怎么优化MongoDB的查询性能?
  • 万勋“机器人服务”全新品牌—汎汐®全球首发!独家服务高空建筑清洗、风机运维等场景
  • AI时代新词-AI驱动的自动化(AI - Driven Automation)
  • 用MMdetection框架训练自己的数据集(全流程实战)
  • BugKu Web之get
  • 什么是3D全景视角?3D全景有什么魅力?
  • 康师傅的“价值战”答卷:一碗面的创新与担当
  • Serverless成本优化实战:从资源浪费到精准管控的架构演进
  • Web安全渗透之长城杯夺旗赛
  • 企微客服如何接入ai大模型
  • 【小白AI教程】大模型知识扫盲通识