# Fab 悬浮按钮 
悬浮动作按钮组件,按下可显示一组动作按钮,支持多种位置和拖动模式。
# 平台差异说明
| App(vue) | App(nvue) | H5 | 小程序 |
|---|---|---|---|
| √ | X | √ | √ |
# 基本使用
最简单的使用方式,悬浮按钮会显示在右下角:
<template> <u-fab v-model:active="active"> <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> <u-button type="warning" size="small">按钮3</u-button> </u-fab> </template> <script> export default { data() { return { active: false } } } </script>✅ Copy success!
# 位置设置
通过 position 属性可以设置悬浮按钮的位置:
<template> <u-fab v-model:active="active" position="left-top" > <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> </u-fab> </template>✅ Copy success!
# 拖动模式
通过 draggable 属性可以设置拖动模式:
<template> <!-- 自动吸附模式:拖动后自动吸附到屏幕边缘 --> <u-fab v-model:active="active" draggable="auto" > <u-button type="primary" size="small">按钮1</u-button> </u-fab> <!-- 自由拖动模式:可拖动到任意位置 --> <u-fab v-model:active="active" draggable="free" > <u-button type="primary" size="small">按钮1</u-button> </u-fab> <!-- 不可拖动模式:固定位置 --> <u-fab v-model:active="active" draggable="none" > <u-button type="primary" size="small">按钮1</u-button> </u-fab> </template>✅ Copy success!
# 弹出方向
通过 direction 属性可以设置菜单弹出方向:
<template> <u-fab v-model:active="active" direction="top" > <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> </u-fab> </template>✅ Copy success!
# 自定义样式
可以通过 type、size 等属性自定义悬浮按钮的样式:
<template> <u-fab v-model:active="active" type="success" size="60" :z-index="100" > <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> </u-fab> </template>✅ Copy success!
# 自定义图标
可以自定义激活和未激活状态的图标:
<template> <u-fab v-model:active="active" inactive-icon="plus" active-icon="close" > <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> </u-fab> </template>✅ Copy success!
# 自定义触发器
通过 trigger 插槽可以自定义触发器:
<template> <u-fab v-model:active="active"> <template #trigger> <view class="custom-trigger"> <u-icon name="star" size="24" color="#fff"></u-icon> </view> </template> <u-button type="primary" size="small">按钮1</u-button> <u-button type="success" size="small">按钮2</u-button> </u-fab> </template> <style> .custom-trigger { width: 56px; height: 56px; background: linear-gradient(45deg, #ff6b6b, #4ecdc4); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } </style>✅ Copy success!
# 不可展开模式
设置 expandable 为 false 可以禁用菜单展开功能,此时点击会触发 click 事件:
<template> <u-fab :expandable="false" @click="handleClick" > </u-fab> </template> <script> export default { methods: { handleClick() { console.log('悬浮按钮被点击') } } } </script>✅ Copy success!
# API
# Fab Props
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|---|---|---|---|---|
| v-model:active | 是否激活 | Boolean | false | true / false |
| type | 按钮类型 | String | primary | primary / success / info / warning / error / default |
| position | 悬浮按钮位置 | String | right-bottom | left-top / right-top / left-bottom / right-bottom / left-center / right-center / top-center / bottom-center |
| draggable | 拖动模式 | String | auto | auto / free / none |
| direction | 菜单弹出方向 | String | top | top / right / bottom / left |
| disabled | 是否禁用 | Boolean | false | true / false |
| inactive-icon | 未展开时的图标 | String | plus | - |
| active-icon | 展开时的图标 | String | close | - |
| size | 悬浮按钮大小 | String / Number | 56 | - |
| z-index | 层级 | String / Number | 99 | - |
| gap | 与边缘的间距 | Object | {top: 16, left: 16, right: 16, bottom: 16} | - |
| expandable | 是否可展开 | Boolean | true | true / false |
| custom-style | 自定义样式 | Object | {} | - |
# Fab Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| click | expandable 为 false 时,点击悬浮按钮触发 | - |
| change | 菜单状态改变时触发 | - |
| update:active | 激活状态改变时触发 | active: Boolean |
# Fab Slots
| 名称 | 说明 |
|---|---|
| default | 默认插槽,放置菜单按钮 |
| trigger | 自定义触发器 |