logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

滚动

上一篇
合并单元格
下一篇
复制与导出

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

虚拟滚动

S2 基于 Canvas 渲染,也实现了虚拟滚动,即只渲染可视区域内的单元格,默认开启。查看更多

延迟 200 ms 效果

preview

自定义滚动速度

可配置 scrollSpeedRatio 控制滚动速率,分为 水平 和 垂直 两个方向,范围为 0-1, 默认为 1。 查看示例

const s2Options = {
interaction: {
scrollSpeedRatio: {
vertical: 0.3, // 垂直
horizontal: 1, // 水平
},
},
};

鼠标滚轮水平滚动

滑动滚轮垂直滚动,如果同时按住 Shift 即可水平滚动

修改滚动至边界行为

对于自身和父容器都存在滚动条时,浏览器默认的滚动行为是:非边界不触发父容器滚动,到达边界后,触发父容器滚动,同时还可以配置 overscroll-behavior 改变默认行为。

S2 是虚拟滚动,但是也模拟了浏览器的滚动行为,可配置 overscrollBehavior 控制非边界滚动行为。查看示例

const s2Options = {
interaction: {
overscrollBehavior: 'auto' // 'auto' | 'none' | 'contain';
// overscrollBehavior: null // 设为 null 则不做任何处理
},
};
  • auto: 和浏览器滚动行为一致
preview
  • contain: 滚动至边界后,不会触发父容器滚动
preview
  • none: 滚动至边界后,不会触发父容器滚动,同时禁用浏览器的默认滚动行为,比如:触发页面下拉刷新,Mac 触控板横向滚动时触发返回. 查看更多
previewpreview

注意: 当配置了 overscrollBehavior,会额外在 body 上添加对应的 overscroll-behavior 属性,以达到禁用浏览器默认滚动行为的目的

preview

监听滚动事件

对于 透视表, 可滚动的区域分别是 行头单元格 和 数值单元格, 对于 明细表, 可滚动的区域只有 数值单元格, 可分别监听,也可以统一监听

preview

S2 提供两种滚动事件:

  • S2Event.GLOBAL_SCROLL: 单元格滚动,数值/行头单元格滚动时都会触发
  • S2Event.ROW_CELL_SCROLL: 行头单元格滚动

同时:对于 s2-react 和 s2-vue 版本,也提供了事件的隐射,具体请查看 API 文档

需要注意的是:行头单元格只会在固定行头时才会显示滚动条,且只会有水平滚动条, 所以拿到的 scrollY 永远都是 0

import { S2Event } from '@antv/s2';
s2.on(S2Event.GLOBAL_SCROLL, (position) => {
console.log('表格滚动', position) // { scrollX: 0, scrollY: 100 }
})
s2.on(S2Event.ROW_CELL_SCROLL, (position) => {
console.log('行头单元格滚动', position) // { scrollX: 0, scrollY: 100 }
})

获取滚动状态

查看相关 API

手动触发表格滚动

参考以下示例:

  • 滚动至指定单元格
  • 循环滚动
// 滚动至指定位置
s2.interaction.scrollTo({
offsetX: { value: 100, animate: true },
offsetY: { value: 100, animate: true },
})
// 滚动至顶部
s2.interaction.scrollToTop({ animate: true })

不触发滚动事件

在手动触发表格滚动时,如果不希望触发内部滚动事件,即 S2Event.GLOBAL_SCROLL, 可以通过 skipScrollEvent: true 禁用。

s2.interaction.scrollTo({
offsetX: { value: 100, animate: true },
offsetY: { value: 100, animate: true },
+ skipScrollEvent: true
})
s2.interaction.scrollToTop({
animate: true,
+ skipScrollEvent: true
})

查看更多 API