v0.1.9

FloatButton 悬浮按钮

引入import { FloatButton } from '@apollo-design/ui';

固定在页面边缘的操作按钮,可组合为操作列表或回到顶部按钮。

何时使用

  • 提供回到顶部、客服、反馈等全局操作。
  • 使用 FloatButtonGroup 收纳一组相关操作。

代码演示

实时示例

基本 #

最简单的用法(默认 FileTextOutlined 图标)。position: fixed 以独立视口为参照,因此该示例在视口画布中展示。

实时示例

组件组 #

FloatButtonGroup(circle ⇒ Flex 独立排列;square ⇒ Space.Compact 紧凑)。同样以独立视口为定位参照。

实时示例

回到顶部 #

FloatButton.BackTop 通过 target 指定滚动容器,visibilityHeight 控制出现阈值,showProgress 展示进度环。

实时示例

悬浮按钮组方位 #

用 Segmented 切换 FloatButtonGroup 的 placement(top / right / bottom / left),点击触发按钮展开菜单。

实时示例

badge #

badge 数据 prop(dot / count / color)。

实时示例

content #

#content 插槽(deprecated description 的对应物)。

实时示例

controlled #

受控 open(v-model:open,需与 trigger 同用)。

实时示例

group-menu #

menu 模式:trigger="click" | "hover" 弹出菜单。

实时示例

placement #

placement 菜单弹出方向(top/left/right/bottom)。

实时示例

progress-ring #

showProgress 进度环(conic-gradient,--{prefix}-float-btn-progress 变量)。

实时示例

shape #

shape="circle" | "square" 两种形状。

实时示例

style-class #

语义化 classNames / styles。

实时示例

tooltip #

tooltip 数据 prop(string 或 TooltipProps 对象)。

实时示例

type #

type="primary" | "default" 两种类型(#icon 插槽自定义图标)。

全部 14 个示例见 demo/。

API

FloatButton

参数 说明 类型 默认值
type 按钮类型 'default' | 'primary' 'default'
shape 按钮形状;Group 内跟随组形状 'circle' | 'square' 'circle'
disabled 禁用,未指定时继承 ConfigProvider boolean false
href / target 链接地址与打开目标,指定 href 时渲染为 a string —
htmlType 原生 button 类型 'button' | 'submit' | 'reset' 'button'
aria-label 按钮的可访问名称 string —
tooltip Tooltip 内容或配置对象 string | TooltipProps —
badge Badge 配置,不含 status、text、title、children FloatButtonBadgeProps —
description 已废弃,使用 #content string —
prefixCls 完整类名前缀 string 'apollo-float-btn'
classNames / styles root、icon、content 语义区域,支持 ({ props }) => ... FloatButtonProps['classNames' / 'styles'] —

#icon 自定义完整图标内容;没有图标槽且内容为空时使用默认图标。#content 提供完整内容,文字建议搭配 shape="square"。插槽存在即优先,包含有意返回空内容的情况;动态增删、文本、数组和 Fragment 均随当前渲染更新。FloatButton 没有默认插槽和 v-model。

@click 只发出一次真实 MouseEvent。禁用状态遵循原生 Button 的交互规则。

根 class、style、id、ARIA 和原生监听器落在真实 button/a 上;style 支持 Vue 字符串、对象和数组。样式优先级为当前主题、Provider 根 style、语义 root style、原生 style;显式 zIndex(包括 0)保留。

FloatButtonGroup

参数 说明 类型 默认值
trigger click/hover 菜单;省略时始终显示列表 'click' | 'hover' —
open 受控开合,支持 v-model:open boolean 非受控初始关闭
placement 列表展开方向 'top' | 'left' | 'right' | 'bottom' 'top'
shape 列表和触发按钮的形状;circle 使用 Flex,square 使用 Space.Compact 'circle' | 'square' 'circle'
type / disabled / href / target / htmlType / tooltip / badge / aria-label 触发按钮配置;子按钮各自声明对应属性 同 FloatButton —
prefixCls 完整类名前缀 string 'apollo-float-btn'
classNames / styles root、list、item、itemIcon、itemContent、trigger、triggerIcon、triggerContent 对象或 ({ props }) => 对象 —
事件 载荷 说明
update:open boolean 开合提议,供 v-model:open 使用
openChange boolean 与 update:open 同源、同次发出
click MouseEvent 触发按钮的真实点击

#default 提供列表;#icon、#closeIcon、#content 分别提供触发按钮的关闭时图标、展开时图标和文字内容。触发按钮与列表按钮分别消费 trigger 和 item 语义区域。

Group 的原生 attrs 只落在外层 div,触发按钮属性使用上表字段和 trigger 语义区域。受控状态仅在父级接受后改变;撤销受控保留最后接受值。click 支持外部点击关闭;hover 同时支持焦点进入和原生按钮激活。Escape 请求关闭,焦点位于列表内且关闭已接受时返回触发按钮;关闭被拒绝或焦点已移到外部时保留当前焦点。

FloatButtonBackTop

继承 FloatButton 的属性、#icon / #content 和 @click,其中 target 改为滚动容器 getter。

参数 说明 类型 默认值
visibilityHeight 滚动到该高度时可见 number 400
duration 回顶动画时长,毫秒;小于等于 0 立即回顶 number 450
showProgress 显示滚动进度环 boolean false
target 当前滚动容器,待绑定的 ref 可返回 null () => HTMLElement | Window | Document | null 按钮所属 document

目标、阈值、进度开关响应动态变化。重复点击、目标切换和卸载取消当前滚动动画;减少动态效果偏好和主题 motion: false 使用即时回顶。滚动和 resize 监听随目标及所属 window 释放。

Provider 与主题

ConfigProvider.components.floatButton 和 floatButtonGroup 分别提供 className、style、classNames、styles。配置替换、移除、嵌套作用域以及 prefixCls/direction 跟随当前值。FloatButton 没有组件 Token;尺寸、边距、颜色、阴影和动画读取当前全局 Alias Token。

Expose

FloatButton 和 FloatButtonBackTop 公开只读 nativeElement: HTMLButtonElement | HTMLAnchorElement | null;Group 为 HTMLDivElement | null。隐藏或卸载的 BackTop 可以为 null。没有额外的命令式方法。

Powered by Vue 3 + ViteApollo Design · Vue NativeGitHub