监听列表组件的滚动事件,具体实现方式取决于你使用的前端框架/技术栈。下面我按常见场景给你总结几种做法:
如果是普通 <ul>、<div> 列表:
<div id="list" style="height:300px;overflow:auto;">
<!-- 列表内容 -->
</div>
<script>
const list = document.getElementById('list');
list.addEventListener('scroll', (e) => {
console.log('滚动位置:', list.scrollTop);
});
</script>
<template>
<div class="list" ref="list">
<!-- 列表 -->
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
const list = ref(null)
onMounted(() => {
list.value.addEventListener('scroll', () => {
console.log(list.value.scrollTop)
})
})
</script>
@scroll<template>
<div class="list" @scroll="onScroll">
<!-- 列表 -->
</div>
</template>
<script setup>
const onScroll = (e) => {
console.log(e.target.scrollTop)
}
</script>
function List() {
const handleScroll = (e) => {
console.log(e.target.scrollTop)
}
return (
<div style={{ height: 300, overflow: 'auto' }} onScroll={handleScroll}>
{/* 列表内容 */}
</div>
)
}
<scroll-view scroll-y bindscroll="onScroll">
<!-- 列表 -->
</scroll-view>
Page({
onScroll(e) {
console.log(e.detail.scrollTop)
}
})
function onScroll(e) {
const { scrollTop, clientHeight, scrollHeight } = e.target
if (scrollTop + clientHeight >= scrollHeight - 10) {
console.log('到达底部')
}
}
let timer = null
function onScroll(e) {
if (timer) return
timer = setTimeout(() => {
console.log(e.target.scrollTop)
timer = null
}, 100)
}
可以告诉我你用的是哪种:
我可以给你对应组件的精确写法。
你是用的哪种技术栈?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。