Dropdown 下拉菜单
概述
展示一组折叠的下拉菜单。
代码示例
需要配合 DropdownMenu
和 DropdownItem
两个组件来使用,并且给列表设置具名 slot 为 list
。
触发对象可以是链接、按钮等各种元素。
本例还展示了禁用项和分隔线。
<template>
<Dropdown>
<a href="javascript:void(0)">
下拉菜单
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem disabled>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem divided>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown style="margin-left: 20px">
<Button type="primary">
下拉菜单
<Icon type="ios-arrow-down"></Icon>
</Button>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem disabled>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem divided>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
</template>
<script>
export default {
}
</script>
通过设置属性 trigger
可以更改触发方式,可选项为 click 、 hover(默认) 或 custom(自定义)。
触发方式设置为 custom 自定义时,需手动设置 visible 属性来控制下拉框的显示。
<template>
<Dropdown>
<a href="javascript:void(0)">
hover 触发
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown trigger="click" style="margin-left: 20px">
<a href="javascript:void(0)">
click 触发
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown trigger="contextMenu" style="margin-left: 20px">
<a href="javascript:void(0)">
right click
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>返回</DropdownItem>
<DropdownItem style="color: #ed4014">删除</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown trigger="custom" :visible="visible" style="margin-left: 20px">
<a href="javascript:void(0)" @click="handleOpen">
custom 触发
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<p>常用于各种自定义下拉内容的场景。</p>
<div style="text-align: right;margin:10px;">
<Button type="primary" @click="handleClose">关闭</Button>
</div>
</DropdownMenu>
</Dropdown>
</template>
<script>
export default {
data () {
return {
visible: false
}
},
methods: {
handleOpen () {
this.visible = true;
},
handleClose () {
this.visible = false;
}
}
}
</script>
通过设置属性 placement
可以更改下拉菜单出现的方向,与 Poptip 和 Tooltip 配置一致,支持 12 个方向,详见 API。
<template>
<Dropdown placement="bottom-start">
<a href="javascript:void(0)">
菜单(左)
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown style="margin-left: 20px">
<a href="javascript:void(0)">
菜单(居中)
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown style="margin-left: 20px" placement="bottom-end">
<a href="javascript:void(0)">
菜单(右)
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<DropdownItem>冰糖葫芦</DropdownItem>
<DropdownItem>北京烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
</template>
<script>
export default {
}
</script>
下拉菜单可以进行嵌套实现级联的效果,嵌套时注意设置子集的展开方向。
<template>
<Dropdown>
<a href="javascript:void(0)">
北京小吃
<Icon type="ios-arrow-down"></Icon>
</a>
<DropdownMenu slot="list">
<DropdownItem>驴打滚</DropdownItem>
<DropdownItem>炸酱面</DropdownItem>
<DropdownItem>豆汁儿</DropdownItem>
<Dropdown placement="right-start">
<DropdownItem>
北京烤鸭
<Icon type="ios-arrow-forward"></Icon>
</DropdownItem>
<DropdownMenu slot="list">
<DropdownItem>挂炉烤鸭</DropdownItem>
<DropdownItem>焖炉烤鸭</DropdownItem>
</DropdownMenu>
</Dropdown>
<DropdownItem>冰糖葫芦</DropdownItem>
</DropdownMenu>
</Dropdown>
</template>
<script>
export default {
}
</script>
API
Dropdown props
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
trigger | 触发方式,可选值为 hover (悬停)click (点击)contextMenu (右键)custom (自定义),使用 custom 时,需配合 visible 一起使用 | String | hover |
visible | 手动控制下拉框的显示,在 trigger = 'custom' 时使用 | Boolean | false |
placement | 下拉菜单出现的位置,可选值为top top-start top-end bottom bottom-start bottom-end left left-start left-end right right-start right-end , 2.12.0 版本开始支持自动识别 | String | bottom |
transfer | 是否将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果 | Boolean | false |
transfer-class-name 3.3.0 | 开启 transfer 时,给浮层添加额外的 class 名称 | String | - |
stop-propagation 3.4.0 | 是否开启 stop-propagation | Boolean | false |
Dropdown events
事件名 | 说明 | 返回值 |
---|---|---|
on-click | 点击菜单项时触发 | DropdownItem 的 name 值 |
on-visible-change | 菜单显示状态改变时调用 | visible |
on-clickoutside | 点击外部关闭下拉菜单时触发 | event |
Dropdown slot
名称 | 说明 |
---|---|
无 | 主体内容 |
list | 列表内容,一般由 DropdownMenu 承担 |
DropdownItem props
属性 | 说明 | 类型 | 默认值 |
---|---|---|---|
name | 用来标识这一项 | String | - |
disabled | 禁用该项 | Boolean | false |
divided | 显示分割线 | Boolean | false |
selected | 标记该项为选中状态 | Boolean | false |