Skip to content
在新窗口打开实时预览

DropMenu 下拉菜单 ​

DropMenu 与 DropMenuItem 成对使用:容器负责多个菜单项的布局、互斥展开和弹层定位,菜单项提供触发器、遮罩与内容面板。面板打开前会真实测量菜单底部位置,适用于普通布局和吸顶布局。

平台兼容性 ​

H5App微信小程序支付宝小程序
√√√√

基础用法 ​

DropMenuItem 必须作为 DropMenu 的直接子组件使用,每个菜单项通过 v-model 独立绑定选中值:

vue
<snake-drop-menu @open="onOpen" @close="onClose">
  <snake-drop-menu-item v-model="category" title="分类" :options="categories" />
  <snake-drop-menu-item v-model="sort" title="排序" :options="sorts" />
</snake-drop-menu>

自定义面板 ​

可以在菜单项默认插槽中放入自定义筛选表单,配合 beforeToggle 在展开前校验:

ts
const beforeToggle = ({ resolve }) => resolve(userHasPermission);
vue
<snake-drop-menu-item title="高级筛选" :before-toggle="beforeToggle">
  <view class="filter-panel">自定义筛选内容</view>
</snake-drop-menu-item>

吸顶与动态内容 ​

菜单进入吸顶状态、窗口尺寸变化或异步面板内容改变后,调用实例方法 updateDropMenuRect() 重新测量面板顶部位置。通过容器实例调用 open(index) 可由外部操作打开指定菜单。

vue
<snake-drop-menu ref="menuRef">
  <snake-drop-menu-item v-model="sort" title="排序" :options="sorts" />
</snake-drop-menu>

<snake-button @click="menuRef?.open(0)">选择排序</snake-button>

API ​

DropMenu ​

Props ​

参数说明类型默认值
activeColor / inactiveColor激活和默认标题颜色string主题色 / 正文色
closeOnClickMask点击遮罩关闭booleantrue
closeOnClickSelf再次点击当前标题关闭booleantrue
duration面板动画时长,msnumber300
height菜单栏高度string | number40
borderBottom是否显示底边booleanfalse
titleSize / menuIcon / menuIconSize标题字号、图标和尺寸string | number28 / down / 18
zIndex菜单和弹层层级基准number985
customClass / customStyle自定义类名和样式string | object | array''

Events ​

事件名触发时机参数
open某个菜单项展开菜单项索引
close某个菜单项关闭菜单项索引

Expose ​

方法说明
open(index)展开指定项
close() / colseAll()关闭当前项;colseAll 保留历史拼写
highlight(index?)只高亮指定标题,不展开面板
updateDropMenuRect()主动重新测量菜单位置

DropMenuItem ​

Props ​

参数说明类型默认值
modelValue当前选中值,支持 v-modelunknown-
title固定标题;为空时显示选中项 labelstring''
options{ label, value, disabled? }[]array[]
disabled是否禁用菜单项booleanfalse
height面板最大高度或 autostring | numberauto
show外部强制显示面板boolean-
beforeToggle展开前回调,通过 resolve(boolean) 决定是否展开function-
customStyle面板自定义样式string | object | array''

Events ​

事件名触发时机参数
update:modelValue选择可用选项选项 value
change选择可用选项选项 value
open面板展开-
close面板关闭-

Slots ​

插槽名说明
default替换自动生成的选项列表

主题变量 ​

变量名说明
--snake-color-primary激活标题和选中项颜色
--snake-color-text-secondary默认标题及选项文字颜色
--snake-color-surface菜单栏和下拉面板背景色
--snake-color-divider菜单栏及选项分隔线颜色
--snake-color-shadow下拉面板阴影颜色

为 uni-app 商城与 CMS 场景设计