前端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滚动条滚动监听内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析vue中的nextTick

    浅析vue中的nextTick

    这篇文章主要介绍了vue中nextTick的相关资料,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • vue项目引入ts步骤(小结)

    vue项目引入ts步骤(小结)

    这篇文章主要介绍了vue项目引入ts步骤(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 详解Vue项目的打包方式(生成dist文件)

    详解Vue项目的打包方式(生成dist文件)

    本文主要介绍了详解Vue项目的打包方式(生成dist文件),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • elementPuls 表格反选实现示例代码

    elementPuls 表格反选实现示例代码

    这篇文章主要介绍了elementPuls 表格反选实现示例代码,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • vue-cli解决IE浏览器sockjs-client错误方法

    vue-cli解决IE浏览器sockjs-client错误方法

    这篇文章主要为大家介绍了vue-cli解决IE浏览器sockjs-client错误方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 基于Vue3实现高性能拖拽指令

    基于Vue3实现高性能拖拽指令

    在现代前端开发中,拖拽功能是增强用户体验的重要手段之一,本文将详细介绍如何在Vue3中封装一个拖拽指令并通过实战例子演示其实现过程,希望对大家有所帮助
    2024-11-11
  • vue3如何添加eslint校验(eslint-plugin-vue)

    vue3如何添加eslint校验(eslint-plugin-vue)

    这篇文章主要介绍了vue3如何添加eslint校验(eslint-plugin-vue),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • vue实现侧边定位栏

    vue实现侧边定位栏

    这篇文章主要为大家详细介绍了vue实现侧边定位栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 完美解决vue引入BMapGL is not defined的问题

    完美解决vue引入BMapGL is not defined的问题

    在Vue项目中使用BMapGL时,通过在src下添加bmp.js文件并配置密钥(ak),可以有效解决地图API的应用问题,本方法是基于个人经验总结,希望能为开发者提供参考和帮助
    2024-10-10
  • 基于vue编写一个月饼连连看游戏

    基于vue编写一个月饼连连看游戏

    中秋节快要到啦,我们一起用Vue创建一个简单的连连看游戏,连连看大家一定都玩过吧,通过消除相同的图案来清理棋盘,小编将一步步引导大家完成整个游戏的制作过程,让我们开始吧,一起为中秋节增添一些互动和娱乐
    2023-09-09

最新评论