前端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
相关推荐
有位神秘人14 小时前
Android中Notification的使用详解
android·java·javascript
肉包_51114 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
大空大地202614 小时前
流程控制语句--if语句
开发语言
phltxy15 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
毕设源码-邱学长15 小时前
【开题答辩全过程】以 基于PHP的发热病人管理平台的设计与实现为例,包含答辩的问题和答案
开发语言·php
HellowAmy15 小时前
我的C++规范 - 线程池
开发语言·c++·代码规范
独自破碎E15 小时前
【BISHI9】田忌赛马
android·java·开发语言
czy878747515 小时前
const 在 C/C++ 中的全面用法(C/C++ 差异+核心场景+实战示例)
c语言·开发语言·c++
范纹杉想快点毕业15 小时前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
Byron070716 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js