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

WHAT - 前端开发滚动场景API罗列

文章目录

  • 一、获取/设置滚动位置
    • 1. window.scrollX / window.scrollY
    • 2. element.scrollTop / element.scrollLeft
  • 二、滚动控制(滚动到某个位置)
    • 3. window.scrollTo(x, y)
    • 4. window.scrollBy(dx, dy)
    • 5. element.scrollTo(options) (支持平滑滚动)
    • 6. element.scrollIntoView(options?)
  • 三、滚动事件监听
    • 7. scroll 事件
  • 四、滚动高度与容器尺寸
    • 8. element.scrollHeight / element.scrollWidth
    • 9. element.clientHeight / element.clientWidth
    • 10. element.offsetHeight / offsetWidth
  • 五、Intersection Observer(可视区域监听)
    • 11. IntersectionObserver
  • 六、Scroll Snap(CSS)
    • 基本属性说明
      • scroll-snap-type
      • scroll-snap-align
    • 实例代码:横向吸附滚动
  • 七、CSS 滚动行为控制

在 WHAT - 前端开发滚动条场景解析 我们已经介绍过一些比较经典的滚动条场景,今天主要学习涉及的API。

在前端开发中,涉及“滚动”操作的 API 非常丰富,主要分为以下几类:

一、获取/设置滚动位置

1. window.scrollX / window.scrollY

  • 返回页面在 X/Y 方向的滚动偏移量(单位:像素)

2. element.scrollTop / element.scrollLeft

  • 获取或设置某个元素在垂直/水平方向上的滚动距离。

二、滚动控制(滚动到某个位置)

3. window.scrollTo(x, y)

  • 将窗口滚动到指定位置

    window.scrollTo(0, 0); // 回到页面顶部
    

4. window.scrollBy(dx, dy)

  • 相对于当前滚动位置滚动一定的距离

    window.scrollBy(0, 100); // 向下滚动 100px
    

5. element.scrollTo(options) (支持平滑滚动)

  • 滚动容器元素到某个位置

    element.scrollTo({ top: 100, behavior: 'smooth' });
    

6. element.scrollIntoView(options?)

  • 将元素滚动到视口可见区域

    document.querySelector('#target').scrollIntoView({ behavior: 'smooth' });
    

三、滚动事件监听

7. scroll 事件

  • 监听页面滚动行为(节流/防抖推荐)

    window.addEventListener('scroll', () => {console.log(window.scrollY);
    });
    

四、滚动高度与容器尺寸

8. element.scrollHeight / element.scrollWidth

  • 内容的总高度/宽度(包括看不见的部分)

9. element.clientHeight / element.clientWidth

  • 可见区域高度/宽度(不含滚动条)

10. element.offsetHeight / offsetWidth

  • 元素的可见大小(包括内边距和边框)

具体区别可以看如下示例图:
在这里插入图片描述


五、Intersection Observer(可视区域监听)

11. IntersectionObserver

  • 判断元素是否出现在视口内,适用于懒加载、无限滚动等场景。

    const observer = new IntersectionObserver(entries => {entries.forEach(entry => {if (entry.isIntersecting) {console.log('元素进入视口');}});
    });
    observer.observe(document.querySelector('#target'));
    

六、Scroll Snap(CSS)

  • scroll-snap-type, scroll-snap-align 等 CSS 属性,用于实现滚动吸附。

这些属性能让滚动容器在滚动停止时自动“吸附”到指定的子元素位置,提升用户体验,常用于:

  • 横向滑动图集(如轮播图)
  • 全屏滚动页面(如 PPT 效果)
  • 滚动选择器(如时间选择)

基本属性说明

scroll-snap-type

  • 设置在滚动容器(父元素)上,定义滚动的方向和吸附方式。
.scroll-container {scroll-snap-type: x mandatory; /* 横向吸附,强制 */overflow-x: scroll;
}
  • 常用值:

    • x, y, block, inline, both:吸附方向
    • mandatory:必须吸附(强吸附)
    • proximity:靠近才吸附(弱吸附)

scroll-snap-align

  • 设置在子元素上,定义该元素在视口中的对齐方式。
.scroll-item {scroll-snap-align: start; /* 元素头部与容器对齐 */
}
  • 常用值:

    • start:顶部或左边对齐
    • center:居中对齐
    • end:底部或右边对齐

实例代码:横向吸附滚动

<div class="scroll-container"><div class="scroll-item">1</div><div class="scroll-item">2</div><div class="scroll-item">3</div>
</div>
.scroll-container {display: flex;overflow-x: auto;scroll-snap-type: x mandatory;scroll-behavior: smooth;width: 100%;
}.scroll-item {flex: 0 0 100%;scroll-snap-align: start;height: 100vh;background: lightgray;border: 1px solid #ccc;
}

更具体的解释和demo可以阅读:https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-type


七、CSS 滚动行为控制

/* 启用平滑滚动 */
html {scroll-behavior: smooth;
}

更具体的内容可以阅读:WHAT - 滚动条 css scrollbar-* 属性

http://www.xdnf.cn/news/446041.html

相关文章:

  • Web UI测试效率低?来试Parasoft Selenic的智能修复与分析!
  • 从 “学会学习” 到高效适应:元学习技术深度解析与应用实践
  • 常见 RPC 协议类别对比
  • 《Effective Python》第2章 字符串和切片操作——深入理解 Python 中 __repr__ 与 __str__
  • 行业趋势与技术创新:驾驭工业元宇宙与绿色智能制造
  • 【氮化镓】AlGaN合金中成分相关的辐射响应
  • 最短路和拓扑排序知识点
  • 各省网上零售额数据(2015-2022年)-社科数据
  • C++之fmt库介绍和使用(1)
  • TCP/IP-——C++编程详解
  • 【windows server脚本每天从网络盘复制到本地】
  • C 语言学习笔记(8)
  • 【3Ds Max】.ive格式文件的导出与加载
  • Oracle数据库中,WITH..AS 子句用法解析
  • 解读红黑树:揭晓高效数据结构的核心引擎
  • 精益数据分析(58/126):移情阶段的深度实践与客户访谈方法论
  • 全面解析 Server-Sent Events(SSE)协议:从大模型流式输出到实时通信场景
  • Spring MVC数据绑定和响应 你了解多少?
  • 如何下载和安装 Ghost Spectre Windows 11 24H2 PRO
  • 102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用
  • 软件设计师考试《综合知识》计算机编码考点分析
  • [Linux] vim及gcc工具
  • Spring中的循环引用
  • 一发入魂:极简解决 SwiftUI 复杂视图未能正确刷新的问题(上)
  • LabVIEW中样条插值实现及应用
  • Qwen集成clickhouse实现RAG
  • C# 调试技巧——日志记录,NuGet内断点
  • 【HCIA】BFD
  • 化工单元操作实训装置JGSX-205计算机过程控制流体输送操作实训装置
  • 环境配置与MySQL简介