前端JavaScript 项目中 获取当前页面滚动位置

在前端 JavaScript 项目中,获取当前页面滚动位置 是一个非常常见的需求(如:懒加载、吸顶、返回顶部、埋点统计等)。下面按推荐程度 + 兼容性做一个清晰总结 👇


✅ 一、最推荐(现代浏览器)

复制代码
const scrollTop = window.scrollY;
const scrollLeft = window.scrollX;
  • scrollY:页面垂直滚动距离

  • scrollX:页面水平滚动距离

📌 优点

  • 语义清晰

  • 所有现代浏览器都支持

  • 优先使用


✅ 二、兼容写法(处理不同浏览器)

复制代码
const scrollTop =
  window.pageYOffset ||
  document.documentElement.scrollTop ||
  document.body.scrollTop ||
  0;

📌 说明

  • pageYOffsetscrollY

  • 主要用于兼容极老浏览器(IE)


⚠️ 三、不要单独用的写法

复制代码
document.body.scrollTop
document.documentElement.scrollTop

原因:

  • 取决于浏览器和文档模式

  • 有时为 0

  • 单独用不可靠


✅ 四、监听滚动事件获取实时位置

复制代码
window.addEventListener('scroll', () => {
  const scrollTop = window.scrollY;
  console.log(scrollTop);
});

⚠️ 注意:scroll 事件触发非常频繁


🚀 五、推荐:节流(Throttle)处理

复制代码
let ticking = false;

window.addEventListener('scroll', () => {
  if (!ticking) {
    window.requestAnimationFrame(() => {
      console.log(window.scrollY);
      ticking = false;
    });
    ticking = true;
  }
});

✔ 性能友好

✔ 适合动画、吸顶、监听滚动进度


📦 六、获取某个元素的滚动位置

复制代码
const el = document.querySelector('.container');

console.log(el.scrollTop);   // 垂直滚动
console.log(el.scrollLeft);  // 水平滚动

适用于:

  • 自定义滚动容器

  • 弹窗

  • 表格、列表容器


🧠 七、判断页面滚动到底部

复制代码
const isBottom =
  window.innerHeight + window.scrollY >= document.body.offsetHeight;

if (isBottom) {
  console.log('滚动到底部了');
}

✅ 八、总结(直接记住)

场景 推荐写法
当前页面滚动位置 window.scrollY
兼容老浏览器 `window.pageYOffset
元素滚动 element.scrollTop
实时监听 scroll + requestAnimationFrame
相关推荐
ZC跨境爬虫2 分钟前
跟着 MDN 学CSS day_7:(层叠优先级与继承)
前端·css·数据库·ui·html
水木流年追梦3 分钟前
大模型入门-RL基础
开发语言·python·算法·leetcode·正则表达式
.千余4 分钟前
【Linux】Socket编程UDP
linux·运维·服务器·开发语言·网络协议·学习·udp
枕星而眠6 分钟前
C++ String类精讲:从基础用法到进阶底层原理
开发语言·c++·后端·学习方法
江屿风7 分钟前
【C++笔记】模板初阶流食般投喂
开发语言·c++·笔记
Shadow(⊙o⊙)7 分钟前
qt信号和槽链接的接入与断开
开发语言·前端·c++·qt·学习
慕斯fuafua8 分钟前
JS——DOM操作
前端·javascript·html
AI玫瑰助手10 分钟前
Python运算符:逻辑运算符(and/or/not)的短路特性
开发语言·python·信息可视化
m0_4746067811 分钟前
JAVA - 使用Apache POI 自定义报表字段手写导出(支持-合并单元格)
java·开发语言·apache
肩上风骋11 分钟前
C++基本知识点积累之d指针,invokemethod函数(一)
开发语言·c++·d指针·invokemethod()