vue判断滚动条上下拉及是否在顶部

方式1. 使用useScroll方式

bash 复制代码
import { useScroll } from '@vueuse/core'
setup() {
    const showNaviBar = ref(true)
    const { arrivedState } = useScroll(document.querySelector('.body'), {
      onScroll: (e) => {
        console.log(arrivedState.top, arrivedState.bottom)
        if (arrivedState.top) {// 在顶部
          showNaviBar.value = true
          return
        }
        if (arrivedState.bottom) {// 到底
          showNaviBar.value = false
        } else {
          showNaviBar.value = true// 其它情况..
        }
      },
    })
    return {
    	showNaviBar,
	}
 }

方式2. 直接监听dom的scroll事件

bash 复制代码
import { ref, onBeforeUnmount, onMounted } from '@vue/composition-api'
setup() {
    const showNaviBar = ref(true)
    const scrollNum = ref(0)
    const handleScroll = (e) => {
      const scrollElement = e.target
      const scrollTop = scrollElement.scrollTop
      const scroll = scrollTop - scrollNum.value
      scrollNum.value = scrollTop
      console.log(scrollTop, scroll)
      if (scrollTop === 0) {// 在顶部,不滚动的情况
        showNaviBar.value = false
        return
      }
      if (scroll >= 0) { // 在滚动时,向下
        showNaviBar.value = false
      } else {// 在滚动时,向上
        showNaviBar.value = true
      }
    }
    onMounted(() => {  
      const scrollElement = document.querySelector('.body')
      scrollElement.addEventListener('scroll', handleScroll)
    })
    onBeforeUnmount(() => {  
      const scrollElement = document.querySelector('.body')
      scrollElement.removeEventListener('scroll', handleScroll)
      showNaviBar.value = true
    })
    return {
    	showNaviBar,
	}
 }
bash 复制代码
handleScroll 打印日志: down
2582 23
2601 19
2614 13
2623 2
handleScroll 打印日志: up
2787 -13
2773 -14
2728 -8
2724 -4
相关推荐
我的golang之路果然有问题几秒前
python中 unicorn 热重启问题和 debug 的 json
java·服务器·前端·python·json
SpringLament1 分钟前
从零打造AI智能博客:一个项目带你入门全栈与大模型应用开发
前端·aigc
晴虹1 分钟前
lecen:一个更好的开源可视化系统搭建项目--数据、请求、寄连对象使用--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
前端·后端·低代码
MOON404☾2 分钟前
004.漏洞分析与利用
前端·网络·网络安全·系统安全·firefox
kylezhao20197 分钟前
C#根据时间加密和防止反编译
java·前端·c#
愈努力俞幸运18 分钟前
volta教程 下载安装使用
前端
冰暮流星23 分钟前
javascript短路运算
开发语言·前端·javascript
qq_4198540527 分钟前
移动端开发:h5应用开发
前端
alonewolf_9929 分钟前
JVM调优实战与常量池深度解析:从Arthas到字符串常量池
前端·jvm·chrome
zuozewei34 分钟前
零基础 | 从零实现ReAct Agent:完整技术实现指南
前端·react.js·前端框架·智能体