R后悔药 Rue.js
  • 首页
    • 深度指南
    • 实战例子
    • 快速上手
    • 路由指南
    • 术语表
    • 错误代码参考
  • API
    • 合作伙伴
    • 插件
    • 组件库
    • 工具链
    • Text.js
    • 新闻简报
    • 常见问题
    • 团队
    • 版本发布
    • 社区指南
    • 行为规范
    • 隐私政策
  • 赞助
  • 合作伙伴
设置
目录统计
总条目
  • 按钮 Button
  • 排版 Typography
  • 时间选择器 TimePicker
  • 下拉菜单 Dropdown
  • 悬浮操作按钮 FAB
  • 模态框 Modal
  • 切换 Swap
  • 主题控制器 Theme Controller
  • 手风琴 Accordion
  • 头像 Avatar
  • 徽标 Badge
  • 卡片 Card
  • 轮播 Carousel
  • 聊天气泡 Chat
  • 折叠面板 Collapse
  • 倒计时 Countdown
  • 描述列表 Descriptions
  • 对比 Diff
  • 二维码 QRCode
  • 悬浮 3D 卡片 Hover 3D
  • 悬浮画廊 Hover Gallery
  • 键盘提示 Kbd
  • 列表 List
  • 统计 Stat
  • 状态 Status
  • 表格 Table
  • 文本轮播 Text Rotate
  • 时间线 Timeline
  • 锚点 Anchor
  • 固钉 Affix
  • 面包屑 Breadcrumbs
  • 底部导航 Dock
  • 链接 Link
  • 菜单 Menu
  • 导航栏 Navbar
  • 分页 Pagination
  • 步骤 Steps
  • 选项卡 Tabs
  • 提示 Alert
  • 结果页 Result
  • 空状态 Empty
  • 加载 Loading
  • 全局提示 Message
  • 进度条 Progress
  • 环形进度 Radial Progress
  • 骨架屏 Skeleton
  • 通知提醒框 Notification
  • 轻提示 Toast
  • 气泡确认框 Popconfirm
  • 气泡卡片 Popover
  • 工具提示 Tooltip
  • 日历 Calendar
  • 颜色选择器 ColorPicker
  • 复选框 Checkbox
  • 字段集 Fieldset
  • 表单 Form
  • 文件输入 File Input
  • 筛选器 Filter
  • 标签 Label
  • 单选框 Radio
  • 范围选择 Range
  • 评分 Rating
  • 分段选择 Segmented
  • 自动完成 AutoComplete
  • 选择器 Select
  • 树选择 TreeSelect
  • 树控件 Tree
  • 提及输入 Mentions
  • 穿梭框 Transfer
  • 漫游引导 Tour
  • 输入框 Input
  • 数字输入 InputNumber
  • 文本域 Textarea
  • 开关 Toggle
  • 校验器 Validator
  • 分隔线 Divider
  • 弹性布局 Flex
  • 分割面板 Splitter
  • 抽屉侧边栏 Drawer
  • 页脚 Footer
  • 栅格 Grid
  • 瀑布流 Masonry
  • 布局 Layout
  • 主视觉区 Hero
  • 指示器 Indicator
  • 组合项 Join
  • 蒙版 Mask
  • 水印 Watermark
  • 间距 Space
  • 堆叠 Stack
  • 浏览器样机 Mockup Browser
  • 代码样机 Mockup Code
  • 手机样机 Mockup Phone
  • 窗口样机 Mockup Window
目录统计
总条目
  • 按钮 Button
  • 排版 Typography
  • 时间选择器 TimePicker
  • 下拉菜单 Dropdown
  • 悬浮操作按钮 FAB
  • 模态框 Modal
  • 切换 Swap
  • 主题控制器 Theme Controller
  • 手风琴 Accordion
  • 头像 Avatar
  • 徽标 Badge
  • 卡片 Card
  • 轮播 Carousel
  • 聊天气泡 Chat
  • 折叠面板 Collapse
  • 倒计时 Countdown
  • 描述列表 Descriptions
  • 对比 Diff
  • 二维码 QRCode
  • 悬浮 3D 卡片 Hover 3D
  • 悬浮画廊 Hover Gallery
  • 键盘提示 Kbd
  • 列表 List
  • 统计 Stat
  • 状态 Status
  • 表格 Table
  • 文本轮播 Text Rotate
  • 时间线 Timeline
  • 锚点 Anchor
  • 固钉 Affix
  • 面包屑 Breadcrumbs
  • 底部导航 Dock
  • 链接 Link
  • 菜单 Menu
  • 导航栏 Navbar
  • 分页 Pagination
  • 步骤 Steps
  • 选项卡 Tabs
  • 提示 Alert
  • 结果页 Result
  • 空状态 Empty
  • 加载 Loading
  • 全局提示 Message
  • 进度条 Progress
  • 环形进度 Radial Progress
  • 骨架屏 Skeleton
  • 通知提醒框 Notification
  • 轻提示 Toast
  • 气泡确认框 Popconfirm
  • 气泡卡片 Popover
  • 工具提示 Tooltip
  • 日历 Calendar
  • 颜色选择器 ColorPicker
  • 复选框 Checkbox
  • 字段集 Fieldset
  • 表单 Form
  • 文件输入 File Input
  • 筛选器 Filter
  • 标签 Label
  • 单选框 Radio
  • 范围选择 Range
  • 评分 Rating
  • 分段选择 Segmented
  • 自动完成 AutoComplete
  • 选择器 Select
  • 树选择 TreeSelect
  • 树控件 Tree
  • 提及输入 Mentions
  • 穿梭框 Transfer
  • 漫游引导 Tour
  • 输入框 Input
  • 数字输入 InputNumber
  • 文本域 Textarea
  • 开关 Toggle
  • 校验器 Validator
  • 分隔线 Divider
  • 弹性布局 Flex
  • 分割面板 Splitter
  • 抽屉侧边栏 Drawer
  • 页脚 Footer
  • 栅格 Grid
  • 瀑布流 Masonry
  • 布局 Layout
  • 主视觉区 Hero
  • 指示器 Indicator
  • 组合项 Join
  • 蒙版 Mask
  • 水印 Watermark
  • 间距 Space
  • 堆叠 Stack
  • 浏览器样机 Mockup Browser
  • 代码样机 Mockup Code
  • 手机样机 Mockup Phone
  • 窗口样机 Mockup Window

Affix 固钉

Rue 的 Affix 是一个纯行为组件:它不替 child 决定外观,只负责在合适的滚动边界上把节点吸附到顶部或底部。 支持 top / bottom 偏移、自定义 target、状态回调,以及 root 与 fixed 两层样式钩子,API 尽量保持直观,视觉仍然交给 Rue 自己的内容块来完成。

Transparent
只管定位,不接管视觉

适合卡片、输入条、操作栏、摘要 rail 等任意自定义内容。

Top & Bottom
顶部与底部两套偏移

既能做右侧工具条,也能做评论回复区或提交操作条。

Target Aware
window 或局部滚动容器

默认跟随整页 window 滚动;需要局部容器吸附时,再显式传 target。

当前默认行为是整页 window 吸附。像本页这种带内部滚动面板的示例,需要显式传入 target 函数或对应容器,避免把默认语义和局部面板语义混在一起。

# 默认全局 window 吸附

不传 target 时直接跟随整页滚动,适合页面级工具条、长表单页头和跨 section 操作条。

Default Window Target
Scroll the page to trigger it

这个示例不传 target,直接使用 Affix 的默认全局 window 语义。继续向下滚动整页,再回滚回来,可以看到它进入吸附后也会正确恢复原位。

Global Window
Sticky release rail
offsetTop 20target omitted
Window 01

Viewport Brief

默认不传 target 时,Affix 会直接跟随整页 window 滚动,适合长表单页头、全局过滤条和跨 section 的操作卡。

Metric
Default
不需要显式声明 target。
进入吸附和回滚释放都跟着整页滚动。
适合最常见的页面级工具条。
Window 02

Page Cadence

这个示例故意保持普通页面流布局,不放进内部滚动容器里,便于直接观察默认 window 吸附。

Metric
Scroll Page
滚动整个文档时触发。
不会混入局部 panel 的滚动语义。
更接近日常后台页和内容页。
Window 03

Release Handoff

继续往下滚再回滚,可以直接看到 Affix 退出 fixed 后恢复原位,不会停留在漂移状态。

Metric
Reset
回到原位后恢复普通流布局。
默认语义就是 window。
局部滚动容器场景再显式传 target。

# 顶部吸附 rail

在自定义面板里固定右侧摘要或快捷操作,是 Affix 最常见的用法。

Flow 01

Signal Map

把长页面拆成几段有明确职责的内容卡片,Affix 用来把关键操作或摘要固定在读者视线附近。

Metric
Top 16px
适合右侧摘要、操作栏、目录卡。
子内容视觉完全由你自己决定。
默认不复制 child 的视觉,只负责定位。
Flow 02

Cadence Plan

随着内容区向下滚动,右侧 rail 会在自定义面板顶部吸附,保持筛选与摘要稳定可见。

Metric
Scoped
target 可以绑定任意滚动容器。
定位规则符合常见吸附组件的预期。
宽度和占位尺寸会自动同步。
Flow 03

Handoff Brief

Affix 本身是透明行为层,适合叠在卡片、工具条、输入区、审批面板等各种 Rue 风格块上。

Metric
Behavior
不强塞额外装饰外观。
支持 top 和 bottom 两种偏移。
支持 root 与 fixed 两层样式扩展。
Summary Rail
Keep actions nearby

在长内容里把摘要、过滤器和快速动作固定到容器顶部,比始终占据正文宽度更稳妥。

Visible actions
3
Affix mode
explicit target + offsetTop

# 底部吸附操作条

适合讨论串、工单详情或移动端表单,把回复和提交动作留在视线底部。

Research09:10
Lina

先把本轮访谈的三个核心异议归并成一个摘要卡,底部回复区保持在阅读终点附近。

Product09:22
Evan

当内容接近底部时,把回复工具条固定在容器下沿,比始终占着顶部空间更适合讨论串。

Design09:41
Nora

视觉上还是维持 Rue 自己的圆角卡片和轻阴影,不去照搬其它库的纯线框感。

Ops10:03
Theo

底部吸附最适合评论框、批量提交条或者移动端的确认操作区,直接支持。

QA10:18
Mika

我们还需要验证 fixed 释放时基础的内联 style 会不会残留,这类问题在行为组件里很常见。

Release10:36
Cole

如果 target 不传,就默认监听 window;但示例 里最好还是用局部面板,避免预览互相干扰。

Reply composer
offsetBottom 让操作条贴住容器下沿,而不是始终抢占顶部。

# 状态回调与样式槽

用 onChange 感知 fixed 状态翻转,并通过 root / fixed 两层样式槽继续定制。

Warmup

Scroll a bit first

先让工具条处于正常流中,滚动到它越过容器顶部之后再观察状态面板的切换。

Metric
Prep
避免一进入预览就直接 fixed。
更容易看清触发边界。
适合验证 onChange 行为。
Review toolbar
rootClassName 负责占位层,className 与 styles.fixed 则直接作用在固定节点上。
onChange attached
Track A

Intake Review

先看输入质量,再决定是否进入下一阶段。这里故意把工具条放在内容中段,用于观察 onChange 的切换时机。

Metric
Observe
onChange 只在 fixed 状态翻转时触发。
适合驱动阴影、统计或埋点。
可以配合 classNames 和 styles 做局部增强。
Track B

Prototype Review

工具条吸附后,仍然展示基础宽度和左侧坐标,适合栅格内部的过滤器和子导航。

Metric
Stable Width
固定态自动同步 left / width / height。
退出 fixed 时会主动清理基础的内联定位样式。
不会把行为泄露到其他组件。
Track C

Closeout

这一段用于拉长容器高度,确保滚动过程中可以多次观察进入和退出固定态。

Metric
Toggle
和普通 div 一样使用。
没有强依赖额外运行时包装。
保持编译器参与优化空间。
Current state
Inline
Change count
0
Styling slots

对透明行为组件来说,root 和 fixed 两层语义槽足够覆盖大部分定制,不需要额外再分拆更多结构。

API

属性说明类型默认值
offsetTop触发顶部吸附的偏移。若 offsetTop 和 offsetBottom 都未传,则默认按 0 处理。number0
offsetBottom触发底部吸附的偏移,适合回复区、提交条和移动端底部操作。number-
target返回滚动监听目标;不传时默认监听 window。需要绑定局部 panel、drawer 或侧栏时再显式传入对应容器。() => HTMLElement | Window | null | undefinedwindow
onChangefixed 状态切换时触发,参数为当前是否处于吸附状态。(affixed?: boolean) => void-
className / style作用在实际固定节点上,适合调整阴影、边框、背景和过渡。string / CSSProperties-
rootClassName作用在占位根节点上,通常用于布局或占位容器的额外类名。string-
classNames / styles分别定制 root 与 fixed 两层语义槽。{ root?: string; fixed?: string } / { root?: style; fixed?: style }-
children任意可渲染内容。Affix 自身只负责定位,不决定视觉外观。any-
页内导航
页内导航
文档
  • 深度指南
  • 实战例子
  • 快速上手
  • 术语表
  • 错误码参照表
关于
  • 常见问题
  • 团队
  • 版本发布
  • 社区指南
生态
  • 插件
  • 组件库
  • 路由指南
  • Text.js
© 2024-2026 Xiangmin Liu
Rue.JS