Skip to content

Floating 浮动

在页面中我们也许经常看见一些: 文本提示框、气泡确认框、下拉框...等定位在某个元素旁的元素。

他们一般由某个位于文档流的 reference(引用) 元素来触发并自动选择合适的方位展示出来。被触发展示的元素则被成为floating(浮动)元素

TIP

Floating基于floating ui开发。通过floating ui可以很轻松地实现浮动元素的定位!

基础用法

Floating组件分为 引用元素 和 浮动元素 两个部分, 其中:

  • 引用元素对应slot.reference
  • 浮动元素对应slot.default

你可以:

  • 通过 trigger 选择浮动元素的触发方式
  • 通过closeOnCLickBody openOnMounted 额外控制浮动元素的关闭/打开方式

当trigger被设置为unset时,则只能通过Exposes.open来打开浮动元素

浮动元素的位置

使用 placement 设置浮动元素相对于引用元素的定位。

内置过渡

使用 transition 可以设置浮动元素的出现动画 全部过渡请参考: 内置过渡

TIP

当然, 如果不满意内置过渡,也可以传入自定义过渡名, 如何定义过渡?

偏移 & 箭头

使用offset可以设置浮动元素相对于引用元素的偏移量,默认5px

使用 showArrow设置是否在浮动元素中添加指向引用元素的箭头

reference解耦

使用reference属性可以动态设置引用元素,适用于需要在已存在结构中为某些元素添加浮动元素的情况

WARNING

slot.reference的优先级高于props.reference,若两者同时设置,引用元素将由slot.reference决定

解耦运用-单例模式

在运用解耦时,可以动态设置reference属性来实现一个flaoting元素服务于多个reference元素.

WARNING

在此模式下, floating元素可能会从意料之外的地方出现

自动跟踪

当引用元素位置会变化时, 浮动元素将会自动跟踪它的位置

TIP

有时候浮动元素可能会跟不上引用元素,这时候可以通过 quick-track 开启快速跟踪

Floating API

Floating Props

属性名说明可选值默认值
trigger浮动元素的出现的触发方式'hover' | 'click' | 'foucs' | 'clickToOpen' | 'unset'click
placement浮动元素相对于引用元素的定位'top' | 'left' | 'bottom' | 'right' | 'top-start' | 'left-start' | 'bottom-start' | 'right-start' | 'top-end' | 'left-end' | 'bottom-end' | 'right-end'bottom
offset浮动元素相对于引用元素的偏移Number5px
transition浮动元素出现时的过渡内置过渡---
openDelay浮动元素打开延时Number0
closeDelay浮动元素关闭延时Number0
disabled是否禁用浮动元素Booleanfalse
closeOnClickBody是否在点击其他元素时关闭Booleanfalse
openOnMounted是否在挂载时立即显示Booleanfalse
teleported是否瞬移到body元素下Booleantrue
showArrow是否展示箭头Booleanfalse
floatingClassfloating元素默认会嵌套一层div,设置这层div的类名String---
reference解耦模式下的引用元素Ref<MaybeElement>---
quickTrack是否开启快速跟踪,若浮动元素跟不上引用元素的改变开启此项Booleanfalse

Floating Events

事件名说明类型
open浮动元素打开时的回调() => void
opened浮动元素打开后的回调() => void
close浮动元素关闭时的回调() => void
closed浮动元素关闭后的回调() => void

Floating Slots

名称说明
reference引用元素
default浮动元素

Floating Exposes

属性名说明类型
close用于关闭浮动元素() => void
open用于打开浮动元素() => void
toggle前两者自动选择其一() => void

源代码

组件

贡献者

Released under the MIT License.