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>
相关推荐
霍理迪1 天前
CSS移动端开发及less使用方法
前端·css
2601_949857431 天前
Flutter for OpenHarmony Web开发助手App实战:HTML参考
前端·flutter·html
£漫步 云端彡1 天前
Golang学习历程【第八篇 指针(pointer)】
javascript·学习·golang
爱内卷的学霸一枚1 天前
现代前端工程化实践:从Vue到React的架构演进与性能优化(7000字深度解析)
前端·vue.js·react.js
南风知我意9571 天前
【前端面试4】框架以及TS
前端·面试·职场和发展
鹏北海-RemHusband1 天前
踩坑记录:iOS Safari 软键盘下的“幽灵弹窗“问题
前端·ios·safari
极客小云1 天前
【基于AI的自动商品试用系统:不仅仅是虚拟试衣!】
javascript·python·django·flask·github·pyqt·fastapi
一位搞嵌入式的 genius1 天前
深入理解浏览器中的 JavaScript:BOM、DOM、网络与性能优化
前端·javascript·网络·性能优化
lang201509281 天前
一键生成Java Web项目:Tomcat-Maven原型解析
java·前端·tomcat
We་ct1 天前
LeetCode 242. 有效的字母异位词:解法解析与时空优化全攻略
前端·算法·leetcode·typescript