当前位置: 首页 > news >正文

JS - 处理元素滚动

业务功能中时常有元素滚动的功能,现在就总结一下一些常用的事件。

一、定位滚动元素

做一切滚动操作之前都应该先定位到滚动元素,再做其他操作,如滚动顶部,获取滚动距离、禁止滚动等。

把以下代码复制粘贴到浏览器 Console 面板,敲一下回车。然后滚动滚动条就可以看到打印:

 function findscroller(element){
        element.οnscrοll=function () {
            console.log(element)
        }
        Array.from(element.children).forEach(findscroller)
  }
  findscroller(document.body)

二、添加滚动事件

找到滚动的元素之后就可以添加事件,如,滚动到顶部

1. 使用Window.scrollTo API
window.scrollTo({
    left: 0,
    top: 0,
    behavior: 'smooth'
})
2. 使用requestAnimationFrame
const scrollToTop = () => {
    let sTop = document.documentElement.scrollTop || document.body.scrollTop
    if (sTop > 0) {
        window.requestAnimationFrame(scrollToTop)
        window.scrollTo(0, sTop - sTop / 8)
    }
}

三、监听滚动事件

移除组件的时候记得卸载监听事件

 useEffect(() => {
    window.addEventListener('scroll', handleScroll);
    return () => {
      window.removeEventListener('scroll', handleScroll);
    };
  }, []);

相关文章:

  • VRRP协议详解
  • 排序算法概述
  • github和gitee
  • 文件上传-Webshell
  • vue项目开发vscode配置
  • 鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙
  • 用HTML5实现灯笼效果
  • 【芯片设计- RTL 数字逻辑设计入门 11 -- 移位运算与乘法】
  • 表单标记(html)
  • List 差集
  • LRU缓存
  • RabbitMQ——构建高性能消息传递的应用
  • 详解格式化输入函数scanf
  • 虚拟飞控计算机:飞行控制系统验证与优化的利器
  • 微服务OAuth 2.1扩展额外信息到JWT并解析(Spring Security 6)
  • 【数据分享】1929-2023年全球站点的逐日平均能见度(Shp\Excel\免费获取)
  • Python 小白的 Leetcode Daily Challenge 刷题计划 - 20240209(除夕)
  • Leecode之环形链表进阶
  • 设计模式-行为型模式(下)
  • 【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
  • 武汉大学新闻与传播学院已由“80后”副院长吴世文主持工作
  • 对谈|《对工作说不》,究竟是要对什么说不?
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 摩天大楼天津117大厦复工背后:停工近十年,未知挑战和压力仍在
  • 全文丨中华人民共和国民营经济促进法