问题描述
有个项目中,需要监听子组件中是否滑动,最初想到了window全局监听,却发现根本监听不到。后想到onScrollApi,这次记录一下在onScrollApi中踩过的坑。
样例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <div> <div onScroll="onScrollCB()" class="scrollDiv"> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> <img src="https://img0.baidu.com/it/u=554275960,1123388892&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" /> </div> 你好 你好 你好 </div> <script> window.addEventListener("scroll", () => { console.log("全局滑动"); });
function onScrollCB() { console.log("div内滑动"); } </script>
|
如果上面那样写,其实永远无法打印div内滑动,因为滑动事件并没有发生在所监听的div中,只有滑动发生在所监听的div中onScroll才会被触发。
解决
解决方法其实很简单,给需要监听的div添加一个高度限制,并允许滑动。就能让滑动发生在div内。
1 2 3 4
| .scrollDiv { height: 400px; overflow: auto; }
|
需要注意的是,div内内容的高度必须高于或宽度宽于div所限制的高度或宽度,才能让div滑动起来。
感谢观看,如果对你有帮助可以关注本站,龙小亦在此谢过了