跳转到内容

浮动按钮 float-button

导航组件。三层同源:无头内核给出解剖与状态机,Vue 组件与自定义元素只是它的两层外壳,行为完全一致。

示例

基础用法

点触发器展开一组动作,再点一下收起;收起时那组按钮退出 Tab 序列

四角

placement 决定钉在哪一角,start / end 跟着书写方向走;那一组恒往页面中间长

展开方式

hover 指针进出整个壳就开合,click 点触发器;点这条恒在,触摸与键盘都靠它

hover:指针移上去就展开

click:点一下展开,Escape 收起

外形与贴边

shape 换圆角档,offset 决定距那两条边多远;translations 换掉读屏念出的名字

产物

自定义元素<xh-float-button>
Vue 组件XhFloatButtonList XhFloatButtonRoot XhFloatButtonTrigger
组合式函数useFloatButton
状态机无,connect 直接由 props 算属性
皮肤@xihan-ui/styles/float-button.css

解剖

部件名即 data-part 属性值,也是皮肤的选择器。加粗的是必备部件,不渲染它组件不工作(Web Components 适配器会在诊断通道上报 wc.missing-part)。

data-scope="float-button"root · trigger · list

Props

属性类型必填说明
defaultOpenboolean
disabledboolean
expandTriggerFloatButtonExpandTrigger展开方式,默认 click。
offsetnumber距那两条边的距离(px),默认 24。
onOpenChange(details: CollapsibleOpenChangeDetails) => voidopen 变化意图;受控时是唯一出口,非受控时随内部转移一并通知。
openboolean
placementFloatButtonPlacement钉在哪一角,默认 bottom-end。
shapeFloatButtonShape触发器外形,默认 circle。
translationsPartial<FloatButtonTranslations>

connect API

useFloatButton 产出的对象。getXxxProps() 铺到对应部件的宿主元素上,其余是可读状态与操作入口。

成员类型说明
openboolean展开的那一组此刻露不露面。
setOpen(next: boolean) => void
getRootProps() => T['element']
getTriggerProps() => T['button']
getListProps() => T['element']

键盘

规格出处:W3C APG

按键生效条件行为
Enter / Spacefocus in trigger, not disabled展开 / 收起 list;悬停展开时这条路照样在,触摸与键盘都靠它
Escapeopen,焦点在整组之内收起 list;悬停展开时指针一走就收,键盘上就只剩这一条路
Tab / Shift+Tabopen走进展开的那一组;收起时 list 带 hidden,里面的按钮一并退出 Tab 序列

Released under The MIT License