更新记录
1.0.1(2026-01-30)
下载此版本
flx:滚动速度
1.0.0(2026-01-30)
下载此版本
初始化上传
平台兼容性
uni-app(4.87)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| × |
√ |
√ |
- |
√ |
- |
- |
- |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
cl-draggableSheet 拖拽底部面板组件
支持拖拽、吸附点、受控高度、插槽自定义、事件通知与滚动锁定。
注意事项
disablePageScroll 仅在 H5 生效,默认锁定 .navigate-page 容器。
- 使用吸附点时会自动补齐
minHeight 与 maxHeight。
v-model:height 为受控模式,外部更新会覆盖内部高度。
基础使用
<cl-draggableSheet
:minHeight="220"
:maxHeight="700"
:initialHeight="320"
@stateChange="onStateChange"
@heightChange="onHeightChange"
>
<view>内容区域</view>
</cl-draggableSheet>
吸附点
<cl-draggableSheet
:minHeight="220"
:maxHeight="700"
:snapPoints="[220, 420, 700]"
:initialIndex="1"
></cl-draggableSheet>
受控高度(v-model)
<cl-draggableSheet
v-model:height="sheetHeight"
:minHeight="220"
:maxHeight="700"
></cl-draggableSheet>
自定义把手与标题区
<cl-draggableSheet :minHeight="220" :maxHeight="700">
<template #handle>
<view class="my-handle">可拖动</view>
</template>
<template #header>
<view class="my-header">服务信息</view>
</template>
<view>内容区域</view>
</cl-draggableSheet>
禁用拖拽
<cl-draggableSheet :disabled="true"></cl-draggableSheet>
方法调用
<cl-draggableSheet ref="sheet"></cl-draggableSheet>
methods: {
toMin() {
this.$refs.sheet.toMin()
},
toMax() {
this.$refs.sheet.toMax()
},
setHeight() {
this.$refs.sheet.setHeight(420)
}
}
API
| 参数 |
说明 |
类型 |
默认值 |
可选值 |
| minHeight |
最小高度(px) |
Number |
200 |
- |
| maxHeight |
最大高度(px) |
Number |
700 |
- |
| initialHeight |
初始高度(px) |
Number |
0 |
- |
| height |
受控高度(v-model) |
Number |
- |
- |
| snapPoints |
吸附高度点(px) |
Array |
[] |
- |
| initialIndex |
初始吸附索引 |
Number |
-1 |
- |
| velocityThreshold |
快速滑动阈值(px/ms) |
Number |
1.2 |
- |
| customClass |
自定义样式类 |
String |
'' |
- |
| disablePageScroll |
拖拽时是否禁用页面滚动(H5) |
Boolean |
true |
false |
| scrollLockSelector |
H5滚动锁定选择器 |
String |
'.navigate-page' |
- |
| draggable |
是否允许拖拽 |
Boolean |
true |
false |
| disabled |
禁用拖拽与交互 |
Boolean |
false |
true |
| safeAreaInsetBottom |
内容包含底部安全区 |
Boolean |
false |
true |
Events
| 事件名 |
说明 |
回调参数 |
| heightChange |
高度变化 |
height: number |
| update:height |
v-model 更新 |
height: number |
| stateChange |
状态变化 |
state: 'min'|'max' |
| dragStart |
开始拖拽 |
height: number |
| dragEnd |
结束拖拽 |
height: number |
| reachMin |
到达最小高度 |
height: number |
| reachMax |
到达最大高度 |
height: number |
Slots
| 插槽名 |
说明 |
| handle |
自定义拖拽把手区域 |
| header |
把手下方标题区域 |
| default |
内容区域 |