Skip to content

FloatingPanel 浮动面板 - Vant 4

📱 FloatingPanel 浮动面板

🎯 介绍

想象一下,有一个神奇的抽屉从屏幕底部悄悄探出头来,就像一个害羞的小精灵等待着被发现!🧚‍♀️ FloatingPanel 浮动面板就是这样一个充满魅力的组件。

它静静地停靠在页面底部,用户只需轻轻一拖,就能唤醒这个沉睡的面板,让它优雅地展开,露出隐藏的宝藏内容!无论是展示详细信息、提供快捷操作,还是创建多层级的内容展示,FloatingPanel 都能带来如丝般顺滑的交互体验。✨

就像手机上的控制中心一样,用户可以随心所欲地拖拽面板到不同的高度,每一次滑动都充满了探索的乐趣!

💡 温馨提示:请确保你的 vant 版本 >= 4.5.0 才能使用这个优雅的组件哦!

📦 引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

js
import { createApp } from'vue'; import { FloatingPanel } from'vant'; const app = createApp(); app.use(FloatingPanel);

🎯 代码演示

🔧 基础用法

让我们从最简单的开始!🚀 FloatingPanel 就像一个乖巧的小宠物,默认时只露出 100px 的小脑袋在屏幕底部。但当用户轻轻一拖,它就会兴奋地跳起来,展开到屏幕高度的 60%,就像一只被唤醒的小猫咪伸懒腰一样可爱!

html

⚓ 自定义锚点

想要让面板更加智能吗?🎯 通过 anchors 属性,你可以为面板设置多个"停车位"!就像电梯有不同的楼层一样,面板会在这些预设的高度位置智能停靠。

配合 v-model:height 双向绑定,你还能精确控制面板当前的"楼层"位置。比如,让面板在三个黄金位置停靠:100px(一楼大厅)、40% 屏幕高度(二楼展厅)和 70% 屏幕高度(三楼全景):

html
js
import { ref } from'vue'; exportdefault { setup() { const anchors = [ 100, Math.round(0.4 * window.innerHeight), Math.round(0.7 * window.innerHeight), ]; const height = ref(anchors[0]); return { anchors, height }; }, };

🎮 仅头部拖拽

有时候你可能希望面板内容区域专心做自己的事情,不被"打扰"!🎭 默认情况下,FloatingPanel 的头部和内容区域都是"热情好客"的,用户在任何地方都能拖拽面板。

但如果你想让内容区域专注于滚动或其他交互,可以通过设置 content-draggable="false" 来让它"专心工作",只允许用户通过头部区域来控制面板的升降。就像给面板戴上了一顶"指挥帽"!👑

html

API

Props

参数说明类型默认值
v-model:height当前面板的显示高度*numberstring*
anchors设置自定义锚点,就像给面板安装电梯楼层按钮 🏢number[][100, window.innerHeight * 0.6]
duration动画时长,控制面板升降的优雅程度 ⏱️*numberstring*
content-draggable允许拖拽内容容器,让内容区域也能"参与"拖拽 🎮booleantrue
lock-scroll v4.6.4当不拖拽时,是否锁定背景滚动,防止"一心二用" 🔒booleanfalse
safe-area-inset-bottom是否开启底部安全区适配booleantrue

Events

事件名说明回调参数
height-change面板显示高度改变且结束拖动后触发{ height: number }

Slots

NameDescription
default自定义面板内容
header自定义面板标头

类型定义

组件导出以下类型定义:

ts
importtype { FloatingPanelProps } from'vant';

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

NameDefault ValueDescription
--van-floating-panel-border-radius16px-
--van-floating-panel-header-height30px-
--van-floating-panel-z-index999-
--van-floating-panel-backgroundvar(--van-background-2)-
--van-floating-panel-bar-width20px-
--van-floating-panel-bar-height3px-
--van-floating-panel-bar-colorvar(--van-gray-5)-

📚 相关文档

FloatingPanel 浮动面板与这些组件搭配使用,能创造出更丰富的交互体验:

基於Vant構建的企業級移動端解決方案