VUE3+TS+ElementUI项目中监测页面滚动scroll事件以及滚动高度不生效问题的解决方案(window.addEventListener)

原生js中我们通常用window.addEventListener来对页面的scroll滚动事件进行监控,并依次来进行一些后续操作,然而在我近期遇到的一套以VUE3+TS+ElementUI为技术架构的项目中,window.addEventListener完全不生效,查了下原因好像是因为外层容器组件所致,没时间去过多深究原因,直接找解决办法。

在找寻解决办法的过程中,我试过了组件,发现没法实现我想要的对滚动高度进行监测的效果,貌似并不适用于对整个页面进行滚动监测,于是自行摸索并找到了一套解决方案,废话说完,请看代码:

typescript 复制代码
// html部分关键div添加ref进行定位
<template>
  <div ref="scrollContainer">
  		<!-- '省略代码' -->
  		<div ref="scrollRef">
  			<!-- '省略代码' -->
  		</div>
  	</div>
</template>

<script setup lang="ts">
const scrollContainer = ref()
const scrollRef = ref()
const handleScroll = (event: any) => {
  const { scrollTop } = event.target // 获取当前滚动高度
  if (scrollTop > 400) {
    scrollRef.value.style.marginTop = scrollTop - 400 + 'px' // 对选中div层进行样式调整
  } else {
    scrollRef.value.style.marginTop = '0px'
  }
}
onMounted(() => {
scrollContainer.value.parentElement.parentElement.parentElement.addEventListener('scroll', handleScroll)
// 我这里用了三个parentElement,有的项目可能只有一两个,也有的可能更多,看项目结构自行去摸索,目的是找出其可以对addEventListener生效的dom,网上有说是<el-container>组件禁用了这一功能,所以只能找出其更上层的dom
})
</script>
相关推荐
passerby60614 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了11 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅14 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅35 分钟前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅1 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment1 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅1 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊1 小时前
jwt介绍
前端
爱敲代码的小鱼1 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte2 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc