JGuang

固钉

Affix · Arco Design

交互预览
npm install @arco-design/web-react@2.66.18

固钉 Affix

将页面元素钉在可视范围。当内容区域比较长,需要滚动页面时,固钉可以将内容固定在屏幕上。常用于侧边菜单和按钮组合。

安装

npm install @arco-design/web-react@2.66.18

在入口引入 @arco-design/web-react/dist/css/arco.css,用 ConfigProvider 设置语言。React 19 项目还需在入口最先引入 @arco-design/web-react/es/_util/react-19-adapter,否则 Message、Modal 等命令式 API 无法渲染。

示例

  • 基本用法:基本用法,不设置固定位置时,当页面滚动元素不可见时,元素固定在页面最顶部。
  • 顶部固定:元素向上滚动到距顶部一定距离时固定。
  • 底部固定:元素向下滚动到距底部一定距离时固定。
  • 固定状态改变回调:当固定状态发生改变时,会触发事件。
  • 滚动容器:用 target 设置需要监听其滚动事件的元素,默认为 window。 target 指定为非 window 容器时,可能会出现 target 外层元素滚动,固钉元素跑出滚动容器的问题。这个时候可以通过传入 targetContainer 设置 target 外层的滚动元素。Affix 会监听该元素的滚动事件来实时更新滚钉元素的位置。也可以在业务代码中自己监听 target 外层滚动元素的 scroll 事件,并调用 this.affixRef.updatePosition() 去更新固钉的位置。

示例来自 Arco Design 官方仓库(MIT),固定在 npm 2.66.18 对应的提交;部分示例使用在线图片或上传地址,预览中网络请求被禁用。

API

Affix

参数名描述类型默认值版本
offsetBottom距离窗口底部达到指定偏移量后触发number--
offsetTop距离窗口顶部达到指定偏移量后触发number0-
affixClassName给 fixed 的元素设置 className。string | string[]-2.8.0
affixStyle给 fixed 的元素设置 style,注意不要设置 position top width height, 因为这几个属性是在元素 fixed 时候用于定位的。CSSProperties-2.8.0
className节点类名string | string[]--
style节点样式CSSProperties--
onChange固定状态发生改变时触发(affixed: boolean) => void--
target滚动容器() => HTMLElement | null | Window() => window-
targetContainertarget 的外层滚动元素。Affix 将会监听该元素的滚动事件,并实时更新固钉的位置。主要是为了解决 target 属性指定为非 window 元素时,如果外层元素滚动,可能会导致固钉跑出容器问题。() => HTMLElement | null | Window--