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...

preview

S2 默认提供 行列等宽, 列等宽, 紧凑 三种布局方式,也可以拖拽行/列头的单元格进行行列宽高动态调整.

基本使用

可配置 resize 控制需要开启的单元格宽高调整热区范围,分为 角头,行头,列头 三个部分,默认为全部开启。可以通过设置 boolean 类型值快捷开启或关闭所有 resize 热区,也可以通过对象类型配置各个区域的热区开启或关闭。查看示例

提示

调整宽高时,会关闭 tooltip 避免遮挡,但是交互状态会保留(如选中).

const s2Options = {
interaction: {
resize: true
},
};
// 等价于
// const s2Options = {
// interaction: {
// resize: {
// rowCellVertical: true,
// cornerCellHorizontal: true,
// colCellHorizontal: true,
// colCellVertical: true
// }
// },
// };

热区控制

支持配置 rowCellVertical, cornerCellHorizontal, colCellHorizontal, colCellVertical 来便捷的控制区域热区控制。

rowCellVertical(行头垂直方向) - 针对行头叶子节点 default
cornerCellHorizontal |(角头水平方向) - 针对角头 CornerNodeType 为 Series 和 Row colorful
colCellHorizontal |(列头水平方向) - 针对列头叶子节点 gray
colCellVertical |(列头垂直方向) - 针对列头各层级节点 dark

除此之外,还支持 resize.visible 动态控制热区是否展示。查看示例

  1. 例:只有叶子节点才显示 resize 热区:
const s2Options = {
interaction: {
resize: {
visible: (cell) => {
const meta = cell.getMeta();
return meta.isLeaf
}
}
},
};
  1. 例:只有某一个单元格显示 resize 热区:
const s2Options = {
interaction: {
resize: {
visible: (cell) => {
const meta = cell.getMeta();
return meta.id === 'root[&]家具[&]桌子[&]number'
}
}
},
};

拖拽禁用

配置 resize.disable,用于控制热区的自定义拖拽校验逻辑。查看示例

preview

例:不允许调小单元格宽度:

const s2Options = {
interaction: {
resize: {
disable: (resizeInfo) => resizeInfo.resizedWidth <= resizeInfo.width;
}
},
};

拖拽影响范围

默认宽高调整只作用于当前单元格,可以通过 rowResizeType, colResizeType 配置拖拽后是影响所有行(列), 还是当前行(列)。

  • all: 对应单元格维度 { city: 20, type: 100 }
  • current 对应单元格 ID { 'root[&]杭州市': 20, 'root[&]类别': 100 }
  • selected 对应当前选中的单元格 ID { 'root[&]杭州市': 20, 'root[&]成都市': 100 }
const s2Options = {
interaction: {
resize: {
// 行高调整时,影响全部行
rowResizeType: 'all', // 'all' | 'current' | 'selected'
// 列宽调整时,只影响当前列
colResizeType: 'current',
}
},
};
resizeType: 'all' default
resizeType: 'current' colorful
resizeType: 'selected' colorful

最小可拖拽宽高

const s2Options = {
interaction: {
resize: {
// 单元格可拖拽最小宽度
minCellWidth: 40,
// 单元格可拖拽最小高度
minCellHeight: 20
}
},
};

主题配置

支持通过调整主题修改热区大小/颜色,参考线颜色/间隔等配置,具体请查看 主题配置 章节。

preview
s2.setTheme({
resizeArea: {
// 热区大小
size: 2,
// 热区背景色
background: '#396',
// 热区背景色透明度
backgroundOpacity: 0,
// 拖拽参考线颜色
guideLineColor: '#396',
// 拖拽参考线禁用颜色
guideLineDisableColor: 'rgba(0,0,0,0.25)',
// 参考线间隔
guideLineDash: [1, 6]
},
});

获取拖拽后的单元格宽高信息

单元格宽高调整后,可以通过监听 S2Event.LAYOUT_RESIZE 事件来获取。

import { S2Event } from '@antv/s2'
import { merge } from 'lodash';
s2.on(S2Event.LAYOUT_RESIZE, (data) => {
console.log('data:', data);
// 持久化
const lastStyle = JSON.parse(localStorage.getItem('style')) || {};
const style = merge({}, lastStyle, data.style);
localStorage.setItem('style', JSON.stringify(style));
});

如需持久化保存宽高信息,那么和 自定义单元格宽高 使用方式一致,更新相应的 style 即可。

const style = JSON.parse(localStorage.getItem('style')) || {}
const s2Options = {
style
}
// 或
s2.setOptions({ style })