前端vue滚动条滚动监听问题成功解决办法

 更新时间:2024年09月05日 09:11:43   作者:加仑小铁  
在Vue中监听滚动事件可以通过使用指令或者自定义事件来实现,这篇文章主要给大家介绍了关于前端vue滚动条滚动监听问题成功解决的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

前端处理滚动条滚动事件无非就是监听scroll事件,但是我们经常会遇到 滚动事件频繁触发, 无法正常获取滚动的元素,最常见的就是 处理滚动位置

vueuse------useScroll的使用

安装说明

vue3

npm i @vueuse/core --save

Vue2 的话还需要额外安装 @vue/composition-api

npm i @vue/composition-api --save

useScroll的使用

1.在@vueuse/core包下引入useScroll

import { useScroll } from '@vueuse/core'
<!--需要滚动的容器-->
<div id="container" ref="container" class="container"></div>
<!--第一个参数el(需要滚动的容器)-->
this.$nextTick(() => {
  const { x, y, isScrolling, arrivedState, directions } = useScroll(document.getElementById('container'))
  this.x = x
  this.y = y
  this.isScrolling = isScrolling
  this.arrivedState = arrivedState
  this.directions = directions
})
<!--
x:用于记录上次滚动的scrollLeft的值,
y:记录上次滚动的scrollTop的值,
isScrolling: 表示是否正在滚动,
arrivedState: {top/right/bottom/left}表示滚动条是否到达指定边界,
directions: {top/right/bottom/left} 表示滚动条正在滚动的方向
-->
<!--第二个参数,可以设置偏移量offset(滚动条到达上下左右边界的一个偏移值,例如left设置为30, 则水平滚动条距离左边界30px时则认为到达了左边界)-->
const { x, y, isScrolling, arrivedState, directions } = useScroll(document.getElementById('container'), { offset: { top: 0, bottom: 300, right: 30, left: 0 }})
<!--第二个参数,{behavior: smooth}设置平滑的滚动-->
const { x, y, isScrolling, arrivedState, directions } = useScroll(document.getElementById('container'), { behavior: 'smooth' })

2.可以手动设置滚动位置

3.这个方法也提供自定义指令的方式

自定义指令vScroll在@vueuse/components中

import { vScroll } from '@vueuse/components'

Vue.directive('scroll', vScroll)

<div id="container" ref="container" v-scroll="onScroll" class="container"></div>

onScroll({ x, y, isScrolling, arrivedState, directions }) {
  this.x = x
  this.y = y
  this.isScrolling = isScrolling
  this.arrivedState = arrivedState
  this.directions = directions
}

4.场景

1.滚动到底部,出现‘返回顶部’按钮

2.滚动到底部,加载新数据

3.其他

总结

到此这篇关于前端vue滚动条滚动监听问题成功解决的文章就介绍到这了,更多相关前端vue滚动条滚动监听内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3.0路由自动导入的方法实例

    vue3.0路由自动导入的方法实例

    这篇文章主要给大家介绍了关于vue3.0路由自动导入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • vue favicon设置以及动态修改favicon的方法

    vue favicon设置以及动态修改favicon的方法

    这篇文章主要介绍了vue favicon设置以及动态修改favicon的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • vue3动态路由+动态组件+缓存应用方式

    vue3动态路由+动态组件+缓存应用方式

    这篇文章主要介绍了vue3动态路由+动态组件+缓存应用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue实例配置对象中el、template、render的用法

    vue实例配置对象中el、template、render的用法

    这篇文章主要介绍了vue实例配置对象中el、template、render的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue中实现3D标签云的详细代码

    Vue中实现3D标签云的详细代码

    本文通过实例代码给大家介绍vue实现3D标签云的方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • vue3中h函数的常用使用方式汇总

    vue3中h函数的常用使用方式汇总

    其实h()函数和createVNode()函数都是创建dom节点,他们的作用是一样的,下面这篇文章主要给大家介绍了关于vue3中h函数的常用使用方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • vue终极性能优化方案(解决首页加载慢问题)

    vue终极性能优化方案(解决首页加载慢问题)

    最近在做项目中前端采用Vue技术,发现首页加载速度非常之慢,下面这篇文章主要给大家介绍了关于vue终极性能优化方案,主要解决首页加载慢问题,需要的朋友可以参考下
    2022-02-02
  • Vue项目中安装使用axios全过程

    Vue项目中安装使用axios全过程

    这篇文章主要介绍了Vue项目中安装使用axios全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数)

    这篇文章主要介绍了vue 路由跳转四种方式 (带参数),本文通过实例代码给大家介绍的详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue利用ref属性更改css样式的操作方法

    Vue利用ref属性更改css样式的操作方法

    在Vue.js的应用开发中,我们经常会遇到需要动态修改DOM元素样式的情况,Vue提供了多种方式来实现这一目标,其中ref是一个非常有用且灵活的工具,本文将深入探讨如何在Vue项目中利用ref属性来更改CSS样式,并通过多个实例演示其具体用法,需要的朋友可以参考下
    2024-10-10

最新评论