尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【论术】 复盘-回顶按钮以及功能

【论术】 复盘-回顶按钮以及功能
📅 发布时间:2026/6/19 12:24:28

项目的回顶按钮以及功能,顺滑滚动/当前处于第一屏内不展示

<template><div class="back-top" :class="{ visible: isVisible }"><a @click="scrollToTop" title="回到顶部"><SvgIcon iconClass="arrowTop" style="font-size: 22px; color: #fff" /></a></div>
</template><script>
import SvgIcon from "@/components/SvgIcon.vue";
export default {name: "BackToTop",props: {// 要监听的滚动元素IDscrollElementId: {type: String,required: true,},// 滚动阈值,超过此值显示按钮scrollThreshold: {type: Number,default: 50,},// 滚动动画持续时间(毫秒)scrollDuration: {type: Number,default: 500,},},components: {SvgIcon,},data() {return {isVisible: false,scrollElement: null,};},mounted() {// 获取滚动元素this.scrollElement = document.getElementById(this.scrollElementId);if (this.scrollElement) {// 添加滚动事件监听this.scrollElement.addEventListener("scroll", this.handleScroll);} else {console.warn(`BackToTop: 未找到ID为"${this.scrollElementId}"的元素`);}},beforeDestroy() {// 移除滚动事件监听if (this.scrollElement) {this.scrollElement.removeEventListener("scroll", this.handleScroll);}},methods: {handleScroll() {// 检查滚动位置this.isVisible = this.scrollElement.scrollTop > this.scrollThreshold;},scrollToTop() {// 平滑滚动到顶部const startPosition = this.scrollElement.scrollTop;const startTime = performance.now();const animateScroll = (currentTime) => {const elapsed = currentTime - startTime;const progress = Math.min(elapsed / this.scrollDuration, 1);// 使用缓动函数使滚动更自然const easeInOutCubic = (t) =>t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;this.scrollElement.scrollTop = startPosition * (1 - easeInOutCubic(progress));if (progress < 1) {requestAnimationFrame(animateScroll);}};requestAnimationFrame(animateScroll);},},
};
</script><style scoped>
.back-top {width: 46px;height: 46px;position: fixed;bottom: 60px;right: 14px;z-index: 1000;opacity: 0;transition: opacity 0.5s ease;pointer-events: none;
}.back-top.visible {opacity: 1;pointer-events: auto;
}.back-top a {display: block;width: 46px;height: 46px;background: #0052d9;text-align: center;height: 46px;border-radius: 50%;text-decoration: none;font-size: 28px;box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);transition: all 0.3s ease;cursor: pointer;
}/* 响应式设计 */
/* @media (max-width: 768px) {.back-top {bottom: 20px;right: 20px;}.back-top a {width: 46px;height: 46px;line-height: 46px;font-size: 24px;}
} */
</style>
父组件使用:
<BackUp scroll-element-id="homeRef" :scroll-duration="600" /> 

以上。

作者:致爱丽丝
出处:https://www.cnblogs.com/hjk1124/
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接并标名原文作者,否则保留追究法律责任的权利。

相关新闻

  • 2025年湖南快手开户渠道权威推荐:湖南信息流开户/湖南朋友圈开户预定/湖南360开户承办商综合实力榜单
  • 2025年行业领先的 GEO 优化公司:权威榜单深度测评
  • 2025年高纯度乳酸菌原料源头工厂TOP5推荐:专业乳酸菌代

最新新闻

  • DeepTutor:你的智能学习伙伴,让AI辅导无处不在
  • 鸿蒙 Next 相亲防骗雷达 App 开发实战:防骗教育 + 交互式自测 + 内容驱动设计
  • 免熏蒸木箱个性化方案哪家好? - 工业品牌热点
  • 嵌入式音频设计:I2S/SAI时序解析与低功耗模式实战
  • 呼伦贝尔市2026年最新黄金回收+白银回收+铂金回收+彩金回收门店TOP排行榜+推荐及联系方式+地址+电话+靠谱店铺指南 - 大熊猫898989
  • Codex 如何使用更高效:一篇讲透实战方法的博文

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号