前端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
相关推荐
badhope9 分钟前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园1 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
hpoenixf1 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特1 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
C++ 老炮儿的技术栈2 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl2 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
泯泷2 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
Liu628882 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手2 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
AI科技星2 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘