Vue3-如何自己写一个“返回顶部”功能

news2024/12/26 22:04:09

功能描述:

在屏幕的右下角固定一个“返回顶部”按钮,只有当用户滚动屏幕一定程度后出现,否则隐藏。

点击按钮,网页平滑的滚动到页面顶部。

环境:Vue3,js,antd

具体思路:

1、给窗口挂载滚动事件,监听视口的滚动,当滚动距离超出设定阈值后,出现按钮。

2、点击按钮,滚动窗口。

具体代码:

<template>
  <div style="height: 100%; overflow-y: auto">
    <a-button class="scrollBox" v-show="isShow" @click="goBack">返回顶部</a-button>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'

const isShow = ref(false) // 控制返回顶部按钮的显隐

// 监听滚动条
const getScrollTop = (e) => {
  const clientHeight = document.documentElement.clientHeight || document.body.clientHeight
  const currentScrollTop = window.scrollY

  // 判断距离顶部多少显示回到顶部图标
  if (currentScrollTop > clientHeight) {
    isShow.value = true
  } else {
    isShow.value = false
  }
}

// 返回顶部
const goBack = () => {
  window.scrollTo({ top: 0, behavior: 'smooth' })
}

onMounted(() => {
  window.addEventListener('scroll', getScrollTop)
})
</script>

<style scoped>
/* 返回顶部样式 */
.scrollBox {
  position: fixed;
  right: 10px;
  bottom: 20px;
  z-index: 99;
}
</style>

一些方法的解释:

  • document.documentElement.clientHeight

    • 这是文档的根元素(即 <html> 元素)的可视高度。它表示浏览器窗口的视口高度,不包括滚动条的高度。对于大多数现代浏览器,这个值等于视口的高度。
  • document.body.clientHeight

    • 这是文档的 <body> 元素的可视高度。它同样表示浏览器窗口的视口高度,不包括滚动条的高度。在绝大多数情况下,这个值应该与 document.documentElement.clientHeight 相同。
  • window.scrollY

    • 这是窗口在垂直方向上滚动的距离。它表示从文档顶部到当前视口顶部的滚动距离。如果页面没有滚动,则这个值为 0。如果页面滚动了一段距离,这个值将显示滚动的像素数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 学习中的 API,如何调用API ?

1.1 API的定义 API&#xff0c;全称是Application Programming Interface&#xff08;应用程序编程接口&#xff09;。它是一组定义好的协议和工具&#xff0c;用于在软件应用程序之间进行通信。API可以简化软件开发&#xff0c;使不同的应用程序能够相互协作。它是软件开发中…

阿里云服务器 Ubuntu18.04 安装 mysql8.0并允许外部连接

参考教程&#xff1a; 官网教程 参考教程一 首先彻底删除mysql5.7 dpkg --list|grep mysql #查看 sudo apt-get remove mysql-common #卸载 sudo apt-get autoremove --purge mysql-server-5.7 #版本自己修改 dpkg -l|grep ^rc|awk {print$2}|sudo xargs dpkg -P #清除残留数…

LeetCode Hot100 将有序数组转换为二叉搜索树

给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被视为正确…

电商老司机教您批量下载1688高清主图、详情图、sku及视频信息

图片在电商中至关重要&#xff0c;高质量的商品图片能吸引顾客注意&#xff0c;提升购买欲望。它们是展示商品特性和细节的主要方式&#xff0c;有助于增强消费者信任&#xff0c;减少退换货率。好的图片还能优化搜索排名&#xff0c;提高转化率。简而言之&#xff0c;图片是电…

Luma AI的战略转向:从Nerf到视频生成领域的背后故事

引言 今天我们将深入探讨Luma AI近期引发关注的视频生成模型——Dream Machine。Luma AI从最初的3D重建和生成业务逐步转向视频生成领域的背后&#xff0c;隐藏着什么样的战略考量和技术演进&#xff1f;让我们通过Luma AI首席科学家宋佳铭的最新访谈&#xff0c;揭开这场技术…

【每日一题 | 数据结构】时间复杂度计算

题目 解题方法 对于二重循环求时间复杂度&#xff1a; 写出外层i的变化值写出内层循环语句执行次数&#xff08;看j&#xff09;对次数求和找到频度和n的关系 笔记 视频跳转&#xff1a; 【每日一题 | 数据结构】时间复杂度计算

手写操作系统:二级引导程序

项目简介 在上篇博客&#xff0c;我们完成了主引导扇区的编写&#xff0c;在主引导扇区我们初始化了寄存器&#xff0c;加载了二级引导程序到内存地址 0x8000处&#xff0c;并跳转至0x8000处执行&#xff0c;在本文我们将继续编写二级引导程序。 在二级引导程序将完成以下任务…

Unity UGUI 实战学习笔记(6)

仅作学习&#xff0c;不做任何商业用途 不是源码&#xff0c;不是源码! 是我通过"照虎画猫"写的&#xff0c;可能有些小修改 不提供素材&#xff0c;所以应该不算是盗版资源&#xff0c;侵权删 因为注册和登录面板的逻辑与数据存储方面已经相对完善 服务器面板逻辑…

为什么现在的家具很多带缓冲器?

在当今的家具市场中&#xff0c;我们不难发现&#xff0c;很多的家具配备了缓冲器。这一现象的背后&#xff0c;有着多方面的原因。首先&#xff0c;随着人们生活水平的提高&#xff0c;对于生活品质的追求也日益增强。缓冲器能够有效地减少家具关闭时产生的噪音&#xff0c;为…

如何通过✅ IPIDEA代理IP,轻松实现数据采集和市场拓展工作(下)

如何通过✅ IPIDEA代理IP&#xff0c;轻松实现数据采集和市场拓展工作 如何通过✅ IPIDEA代理IP&#xff0c;轻松实现数据采集和市场拓展工作前言IPIDEA爬虫实战实战Demo演示总结 如何通过✅ IPIDEA代理IP&#xff0c;轻松实现数据采集和市场拓展工作 前言 在当今全球化市场的…

【Qt】QTextEdit

QTextEdit是Qt中用于编辑和显示文本内容的类。其提供了丰富的用户界面控件&#xff0c;可以用于创建和包含格式化文本、图片和链接的文本编辑器 常用属性 属性说明markdown输入框内持有的内容。支持markdown格式&#xff0c;能自动的对markdown文本进行渲染成htmlhtml输入框持…

性能提升20%,字节跳动HTTPDNS从中心下沉到边缘

摘要&#xff1a;本文介绍了HTTPDNS服务从中心迁移至边缘详细的落地过程。主要内容为&#xff1a; HTTPDNS下沉边缘实践遇到的挑战&#xff0c;包括服务放置、流量调度 HTTPDNS下沉边缘解决方案 从性能、成本出发&#xff0c;谈谈HTTPDNS下沉边缘后的收益 传统的DNS流程中…

Python的语法糖及其进化,带范例

话说python也算是多年媳妇熬成婆的典范了。 1&#xff09;3.6以后引入的f-格式化字符串&#xff0c;现在写代码更像写小作文了&#xff0c;而且折行顺眼多了。 print(f"""Hello, {"World".upper()}""") 2&#xff09;3.5以后引入的:…

普通人如何抓住AI浪潮的入局之路?

前言 随着生成式AI的迅速普及&#xff0c;不仅科技巨头们纷纷投入重金布局&#xff0c;招聘市场也随之发生了显著变化。对于程序员而言&#xff0c;掌握AI技术已成为提升个人竞争力的关键。然而&#xff0c;面对复杂的理论和技术栈&#xff0c;很多人仍然感到迷茫&#xff0c;…

Windows11安装MySQL8.4.2版本详细过程记录

下载 地址&#xff1a;https://dev.mysql.com/downloads/mysql/8.0.html 我选择下载zip版本&#xff1a; 点击下载需要登录&#xff1a; 于是我登录&#xff1a; 接着点下载&#xff1a; 被迅雷拦截了&#xff0c;直接使用迅雷下载&#xff1a; 下载好了&#xff1…

用Python来DIY一个AI面部情绪识别API的简单方案

基于人工智能的面部情绪识别API在很多场景都得到了应用&#xff0c;在人们情绪化消费、兴趣化消费的当下&#xff0c;如何察言观色&#xff0c;洞察用户真实的心理活动非常必要&#xff0c;对于大多数的人来说&#xff0c;这事非常有挑战&#xff0c;好在以ChatGPT为代表的大语…

如何实现ECharts图表根据屏幕大小自适应?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-ECharts自适应 目录 前言 1920*1080分辨率示图 8184*2432分辨率示图 以vue3ts开发为例 (…

CSS 如何实现彩色渐变效果的文字

效果图如下&#xff1a;实现文字的字体颜色由 #ad4bd7 向 #6351fe 的颜色渐变效果。 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widt…

python 直接引用、浅拷贝、深拷贝的区别

1. 简述 简单来讲&#xff0c;直接引用所指向的地址是原对象的地址&#xff0c;深拷贝所指向的是新对象的地址&#xff0c;浅拷贝介于二者之间&#xff0c;原对象的直接子对象为新&#xff0c;子孙对象为原子孙对象。 下面用两个变量 a、b&#xff0c;一个字典对象 {‘aaa’:…