前端如何判断是页面滚动还是窗口滚动

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端如何判断是页面滚动还是窗口滚动相关的知识,希望对你有一定的参考价值。

在写项目的时候遇到这个问题,现在举两个例子来记录这个问题。

页面滚动

html:

<div class="temp">
    <template v-for="item in 100">
        <div> item </div>
    </template>
</div>

css:

.temp 
    height: 100px;
    overflow: auto;
    background-color: aqua;

页面:


我们给页面设置了高度,这里数字的滚动就是页面的滚动。

窗口滚动

<template v-for="item in 100">
    <div> item </div>
</template>

页面是这样的:

可以看到,我们的窗口中只能显示38个数字,但它一共有100个数字。我们没有给它设置高度。

我们画图举例:紫色相当于100个数字的页面,蓝色相当于我们的窗口。我们的页面长度大于窗口长度,因此想要看到38以后的数字,需要窗口向下移,也就是窗口滚动,像是电梯一样。


因此,如果此时想要监听滚动,则需要在window上监听:

window.addEventListener('scroll', () => )

窗口滚到底部

如何判断窗口是否滚到底部?

还是这个图:

橙色长度表示scrollTop。
绿色长度表示scrollHeight。
我们窗口的长度为clientHeight。

若是窗口滚到底部,则有:

scrollTop<=scrollHeight+clientHeight

参考

Element.scrollTop - Web API 接口参考 | MDN (mozilla.org)
Element - Web API 接口参考 | MDN (mozilla.org)

以上是关于前端如何判断是页面滚动还是窗口滚动的主要内容,如果未能解决你的问题,请参考以下文章

前端Vue项目:旅游App-(24)useScroll:加强useScroll的功能性,监听窗口和页面的滚动

如何滚动另一个 UICollectionView 下方的 UICollectionView?

如何判断滚动条滚到页面底部并执行事件

flex4 如何给整个页面添加滚动条?

js如何判断鼠标滚轮是向下还是向上滚动

前端与移动开发项目一