自开发多功能Vue组件:可定义滚动速度[回到顶部/底部]图标组件的安装与使用!

本文主要是介绍自开发多功能Vue组件:可定义滚动速度[回到顶部/底部]图标组件的安装与使用!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@samdy-chan/vue3-goto-top-or-bottom

  • Preview(本组件使用效果预览图)
  • 本组件使用过程中的 GIF 动态效果图(图片经过压缩,视觉可能会有所模糊):

本组件使用动态效果图

  • Functional Description(功能描述)
@samdy-chan/vue3-goto-top-or-bottom 这个 vue3 自定义组件由作者 Samdy_Chan 独立开发。此组件的主要功能是根据父容器是否出现垂直滚动条来自动显示/隐藏 [滚动到顶部/底部] 图标,点击图标可直接或缓慢动画效果滚动到父容器或页面顶部/底部,其主要功能包括:

1)、本组件基于 Vite 5.3.1 + Vue 3.4.29 + TypeScript(TS) 5.2.2 构建打包,支持组件参数TS类型声明;
本组件的[滚动到顶部/底部]图标文件和所有css样式代码都已经全部打包到生成的 js 文件中,并正常引用和使用,所以不会额外生成单独的图标图片文件及css样式文件;
[滚动到顶部/底部]图标采用 png 透明图片,可通过组件参数如

<GotoTopOrBottom :cssObj="{backgroundColor: '#2c8ce6'}" 

改变图标的颜色(默认为浅蓝色)。由于图片较小,为了方便,并在打包时将图片打包为 base64 编码格式,并在打包后的 js 文件中直接引用了此 base64 编码格式的图片;

2)、根据此组件父容器(HTML父标签元素)的内容如果超出了父容器的高度(需设置父容器css属性height或max-height),出现了垂直滚动条时(需设置父容器css属性overflow: auto或overflow-y: auto),会自动显示本组件(滚动到顶部/底部)箭头图标,点击图标可直接或缓慢动画效果滚动到父容器或页面顶部/底部;

3)、本组件会自动判断,如果滚动条已经滚动到父容器最顶部(包括手动拖动滚动条到顶部,或点击本组件[滚动到顶部]图标滚动到顶部),则会隐藏[滚动到顶部]图标,只显示[滚动到底部]图标。反之亦然,当滚动到底部时,只显示[滚动到顶部]图标;

4)、本组件的[滚动到顶部/底部]图标可以在父容器(当缺省 parentIsWindow 参数或值为 false)或页面(当 parentIsWindow 参数值为 true)范围内随意拖动移动,以便方便阅读父容器的内容,鼠标左键按住图标0.5秒,即可拖动移动图标;

5)、右击本组件的[滚动到顶部/底部]图标,在弹出的快捷菜单中点击[隐藏]菜单项,可在本次浏览中临时隐藏本组件的[滚动到顶部/底部]图标,以便方便阅读父容器的内容;

6)、使用本组件时,可设置传递 animateObj 对象参数是否开启缓慢滚动动效 animateObj.enable(默认true,开启),和滚动时长 animateObj.duration(默认300毫秒,建议保留此默认值,如果设置不当,可能会引起滚动卡顿不流畅),使用方法,例如:

<GotoTopOrBottom :animateObj="{enable:true, duration: 300}" />

缺省不设置,默认就是开启滚动动效和滚动时长300毫秒;

  • Installation(安装方法)
a)、For npm:

npm install @samdy-chan/vue3-goto-top-or-bottom --save

b)、For yarn:

yarn add @samdy-chan/vue3-goto-top-or-bottom

c)、For pnpm:

pnpm add @samdy-chan/vue3-goto-top-or-bottom --save

在 main.js / main.ts 中全局注册本组件,这样在其它所有组件及.vue页面中直接使用本组件标签即可,无需再导入,全局注册代码如下:


// main.js or main.tsimport { createApp } from 'vue';import App from './App.vue';// 1、导入本组件(必须用默认导入方式)import GotoTopOrBottom from 'vue3-goto-top-or-bottom';// 根据 App.vue 组件创建 Vue app 实例const app = createApp(App);// 2、全局注册本组件app.use(GotoTopOrBottom);// 挂载 Vue app 实例到 id 为 'app' 的 DOM 节点中app.mount('#app');

在每个需要使用本组件的.vue文件中都要导入本组件(必须用分别导入方式):

// 1、导入本组件<script setup lang="ts">// 必须用分别导入方式(在 main.js or main.ts 中全局注册,则要用默认导入方式)import { GotoTopOrBottom } from '@samdy-chan/vue3-goto-top-or-bottom';/**** 组件参数及支持的自定义事件设置 ****//** 本组件目前支持配置及传递 2 个可选的自定义事件,分别是:@topFinished、@bottomFinished,说明如下:
@topFinished:点击[回到顶部]图标或滚动条滚动到顶部后,要调用的自定义事件回调函数;
@bottomFinished:点击[回到底部]图标或滚动条滚动到底部后,要调用的自定义事件回调函数;**//** 本组件目前支持配置及传递 7 个 Props 参数,分别是:timeout、parentIsWindow、showIconTips、showWhichIcon、scrollDistance、cssObj、animateObj,其中 cssObj、animateObj 为对象式配置参数,这些参数的作用及说明如下(也可详见本组件的TS类型声明文件<<goto-top-or-bottom.vue.d.ts>>,如果是在 vite + ts 环境中使用本组件,import 导入本组件后,按住Ctrl+鼠标左击本组件名,会自动弹出类型声明或跳转到类型声明文件)**/// 参数一(timeout):可选参数,加载或刷新页面时,延迟显示本组件滚动图标的时间,默认值为2000毫秒(2秒)。因为父容器的内容有可能是异步获取的(如读取文件或请求后端 api 接口),这样的话,一开始父容器还没有内容,是不会有滚动条的,待获取到异步数据填充到父容器并超过其允许的高度后,才会出现滚动条,此时,才判断需要显示滚动图标,可根据你的系统及网络状况,调节该延迟参数,单位为毫秒,一般使用默认值2000毫秒应该足够。const timeout = 2000;// 参数二(parentIsWindow):可选参数,父容器是否为顶级元素(window/document/body),默认值为false,将本组件放在哪个HTML标签容器内,就是使用本组件控制哪个HTML标签容器(父容器)的滚动。const parentIsWindow = false;/** 如果需要为某个块级父容器(如 div/main/section/article/aside/display:block等)添加本滚动图标组件,只需要将本组件放在父容器一级子级别中即可,如下:<div class="parent-container">......<GotoTopOrBottom /></div>**//** 如果需要把本滚动图标组件控制顶级对象(window/document/body)的滚动,即滚动整个页面窗口的滚动条时,显示和使用本组件,侧可将本组件放在页面任何HTML标签内,但需要指定 parentIsWindow 参数或设置为 true,如下:......<GotoTopOrBottom :parentIsWindow="true" />**/// 参数三(showIconTips):可选参数,鼠标放在[回到顶部/底部]图标是否显示标签 title 属性的提示内容,默认值 trueconst showIconTips = true;// 参数四(showWhichIcon):可选参数,根据当前滚动情况,显示哪个滚动图标:// 'both':显示[回到顶/底部]两个图标(默认值),// 'top':只显示[回到顶部]图标,// 'bottom':只显示[回到底部]图标const showWhichIcon = 'both';// 参数五(scrollDistance):可选参数,滚动多少距离后才显示[回到顶/底部]图标,默认值 1const scrollDistance: 1;// 参数六(cssObj):可选参数,组件 css 样式设置参数的对象,以下均为默认值,如不传该参数,各属性将使用默认值,// 如果只想修改某些 css 属性,只需要设置需要修改的属性即可,如:// <GotoTopOrBottom :cssObj="{width: '30px', height: '30px'}" />// cssObj 样式设置对象参数各属性默认值如下:const cssObj = {// 本组件滚动图标距离父容器或页面顶部的距离,默认值是50%,top: '50%' + translateY: '-50%' 为垂直居中top: '50%',// 本组件滚动图标距离父容器或页面右边距的距离,默认值30pxright: '30px',// 本组件滚动图标向上移动自身距离的一半(-50%,默认)translateY: '-50%',// [回到底部]图标盒子顶部距离[回到顶部]图标底部的距离,默认值10pxmarginTop: '10px',// 本组件滚动图标的宽高大小设置,默认值40pxwidth: '40px',height: '40px',// 本组件滚动图标的四边角圆弧度设置,50%为正圆形,默认值50%borderRadius: '50%',// 本组件滚动图标的颜色,默认为浅蓝色#2c8ce6backgroundColor: '#2c8ce6',// 本组件滚动图标的透明度设置,默认值为 0.6opacity: '.6',// 拖拽滚动图标到上下左右边界时保留的间距值,默认值为0pxsideMargin: '0px'}// 参数七(animateObj):可选参数,组件滚动动画效果参数设置,以下均为默认值,如不传该参数,将使用以下默认值:const animateObj = {// 是否开启滚动动画,不开启则立即一次性滚动到顶部/底部,默认开启trueenable: true,// 动画时长,单位毫秒,默认值300毫秒,需开启动画才生效(animateObj.enable=true)。数字越大,滚动越慢,建议保留默认值即可duration: 300,// 定时器控制多久滚动一次,单位毫秒,默认值15毫秒,需开启动画才生效(animateObj.enable=true)。数字越大,滚动越卡顿,建议保留默认值即可interval: 15}// 说明:animateObj.duration 和 animateObj.interval 参数可产生滚动次数(滚动多少次才能滚动到顶/底部);滚动次数 = animateObj.duration / animateObj.interval
</script>
// 2、使用本组件// 2.1、在 div 等块状盒子父容器中使用本组件(控制div等块状父容器的滚动)<template><div class="parent-container"><!-- 使用方式1:最基本使用,无需传递任何参数,使用默认值一般足够了,本组件必须放在父容器标签一级层次内 --><GotoTopOrBottom /><!-- 使用方式2:传递如上设置的指定参数 --><!--<GotoTopOrBottom :timeout="2000" :parentIsWindow="false" :showIconTips="true"showWhichIcon="both":scrollDistance="1":cssObj="cssObj" :animateObj="animateObj" />--><!-- 使用方式3:传递设置参数的非默认值 --><!--<GotoTopOrBottom :timeout="1500" showWhichIcon="top":scrollDistance="50":cssObj="{width: '30px', height: '30px', backgroundColor: '#00ff00'}" :animateObj="{duration: 500}" />--></div>
</template>// 2.2、在 window/document/body 顶级父容器中使用本组件(控制顶级父容器的滚动)
<template><!-- 必须要指定 parentIsWindow 参数或设置其为布尔类型值 true,其它的参数设置同上2.1所说的。要将 window/document/body 作为父容器时,可将本组件放在任意HTML标签内--><GotoTopOrBottom :parentIsWindow="true" />
</template>
参数名类型是否可选说明默认值
timeoutnumber加载或刷新页面时,延迟显示本组件滚动图标的时间(单位毫秒ms),因为父容器的内容有可能是异步获取的(如读取文件或请求后端 api 接口),这样的话,一开始父容器还没有内容,是不会有滚动条的,待获取到异步数据填充到父容器并超过其允许的高度后,才会出现滚动条,此时,才判断需要显示滚动图标(手动滚动时也会显示滚动图标),可根据你的系统及网络状况,调节该延迟参数,单位为毫秒,一般使用默认值2000毫秒应该足够。2000
parentIsWindowboolean父容器是否为顶级(window/document/body)元素,将本组件放在哪个HTML标签容器内,就是使用本组件控制哪个HTML标签容器(父容器)的滚动。当此参数值为true时,表示将整个页面窗口设置为父容器,控制整个页面的滚动,此时将本组件放在任意HTML标签内都可以。false
showIconTipsboolean鼠标放在[回到顶部/底部]图标是否显示标签 title 属性的提示内容true
showWhichIconenum: 'both'|'top'|'bottom' 显示哪个滚动图标,根据当前滚动距离情况:
  • 'both':显示[回到顶/底部]两个图标(默认值)
  • 'top':只显示[回到顶部]图标
  • 'bottom':只显示[回到底部]图标
'both'
scrollDistancenumber滚动多少距离后才显示[回到顶/底部]图标1
cssObjobject 组件 css 样式设置参数的对象,如不传该参数,所有属性使用默认值,如果只想修改某些 css 属性,只需要设置需要修改的属性即可,如: <GotoTopOrBottom :cssObj="{width: '30px', height: '30px'}" /> {
top: '50%',
right: '30px',
translateY: '-50%',
marginTop: '10px',
width: '40px',
height: '40px',
borderRadius: '50%',
backgroundColor: '#2c8ce6',
opacity: '.6',
sideMargin: '0px'
}
cssObj.topstring滚动图标距离页面顶部的距离,默认值50%,top: '50%' + translateY: '-50%' 为垂直居中'50%'
cssObj.rightstring滚动图标距离父容器或页面右边距的距离'30px'
cssObj.translateYstring滚动图标向上移动自身距离的一半'-50%'
cssObj.marginTopstring[回到底部]图标盒子顶部距离[回到顶部]图标底部的距离'10px'
cssObj.widthstring[回到顶/底部]单个滚动图标的宽度大小设置'40px'
cssObj.heightstring[回到顶/底部]单个滚动图标的高度大小设置'40px'
cssObj.borderRadiusstring滚动图标的四边角圆弧度设置,50%为正圆形'50%'
cssObj.backgroundColorstring滚动图标的颜色,默认为浅蓝色'#2c8ce6'
cssObj.opacitystring滚动图标的透明度设置'0.6'
cssObj.sideMarginstring拖拽滚动图标到上下左右边界时保留的间距值'0px'
     
animateObjobject组件滚动动画效果参数设置,如不传该参数,所有属性使用默认值,如果只想修改某些属性,只需要设置需要修改的属性即可,如: <GotoTopOrBottom :animateObj="{duration: 500}" /> {
enable: true,
duration: 300,
interval: 15,
}
animateObj.enableboolean是否开启缓慢滚动动画,不开启则立即一次性滚动到顶部/底部,默认开启true
animateObj.durationnumber动画时长,单位毫秒,默认值300毫秒,需开启动画才生效(animateObj.enable=true)。数字越大,滚动越慢,建议保留默认值即可300
animateObj.intervalnumber定时器控制多久滚动一次,单位毫秒,默认值15毫秒,需开启动画才生效(animateObj.enable=true)。数字越大,滚动越卡顿,建议保留默认值即可15
备注 animateObj.duration 和 animateObj.interval 参数可产生滚动次数(滚动多少次才能滚动到顶/底部);
滚动次数 = animateObj.duration / animateObj.interval
  • Events 使用说明
事件名类型是否可选说明
@topFinishedFunction点击[回到顶部]图标或滚动条滚动到顶部后,要调用的自定义事件回调函数
@bottomFinishedFunction点击[回到底部]图标或滚动条滚动到底部后,要调用的自定义事件回调函数
  • Preview(本组件使用效果预览图)
  • 本组件使用过程中的 GIF 动态效果图(图片经过压缩,视觉可能会有所模糊):

本组件使用动态效果图

  • 组件会根据当前浏览器使用的语言环境,如果是中文环境 ,则显示中文提示,否则显示英文提示,如下图:

本组件操作中文提示效果图

本组件操作英文提示效果图

这篇关于自开发多功能Vue组件:可定义滚动速度[回到顶部/底部]图标组件的安装与使用!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094197

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没