Vue3.0实现原生高度可自定义菜单组件vue3-menus
vue3-menus
Vue3.0 自定义右键菜单
【Vue3.0实现原生高度可自定义菜单组件vue3-menus】Vue3.0 原生实现完全自定义右键菜单组件, 零依赖,可根据可视区域自动调节显示位置,可支持插槽完全重写每一项菜单
文章图片
在线演示
- 完整菜单功能演示
- 复制粘贴演示
npm install vue3-menus
或
yarn add vue3-menus
CDN
.div {
display: inline-block;
background-color: aqua;
margin: 0 20px;
line-height: 200px;
padding: 0 20px;
height: 200px;
}
指令方式使用
指令方式打开菜单
方法方式使用
事件方式打开菜单
组件方式使用
组件方式打开菜单
{{activeIndex}}
插槽:{{ item.label }}
Vite下使用 使用方式1
import { createApp } from 'vue';
import App from './App.vue';
import Vue3Menus from 'https://esm.sh/vue3-menus@1.0.3';
// 也可以将1.0.3换成其他版本号
const app = createApp(App);
app.mount('#app');
使用方式2
在vite配置文件vite.config中进行别名替换
import { createApp } from 'vue';
import App from './App.vue';
import Vue3Menus from 'vue3-menus';
const app = createApp(App);
app.mount('#app');
export default {
resolve: {
alias: {
// 其他配置
'vue3-menus': 'https://esm.sh/vue3-menus@1.0.3'// 也可以将1.0.3换成其他版本号
}
}
}
参数说明 单个菜单项参数
MenusItemOptions
属性 | 描述 | 类型 | 是否必填 | 默认值 | |
---|---|---|---|---|---|
label | 菜单项名称 | string |
true |
— | |
style | 每一项菜单的自定义样式 | object |
false |
{} |
|
icon | string : 传入图标html代码、object : 传入组件或者{node: 组件, option: 组件配置参数} |
string \ |
object |
false |
undefined |
disabled | 是否禁用菜单项 | boolean |
false |
undefined |
|
divided | 是否显示分割线 | boolean |
false |
undefined |
|
tip | 没项菜单后面的小提示 | string |
false |
'' |
|
click | 菜单项点击事件,返回null 或false 不关闭菜单 |
Function() |
false |
undefined |
|
children | 子菜单列表信息 | MenusItemOptions[] |
false |
undefined |
MenuOptions
属性 | 描述 | 类型 | 是否必填 | 默认值 | |
---|---|---|---|---|---|
menus | 菜单列表信息 | MenusItemOptions[] |
true |
[] | |
menusStyle | 菜单容器的样式 | object |
false |
{} | |
menusItemClass | 菜单每一项的class 名 |
string |
false |
null |
|
event | 鼠标事件信息(指令使用时可以不传) | Event |
与position 必填一项 |
{} | |
position | 手动传入菜单显示位置(指令使用时可以不传) | {x: number, y: number} |
与event 必填一项 |
{} | |
minWidth | 菜单容器最小宽度 | number \ |
string |
false |
none |
maxWidth | 菜单容器最打宽度 | number \ |
string |
false |
none |
zIndex | 菜单层级 | number \ |
string |
false |
3 |
Vue3Menus
参数属性 | 描述 | 类型 | 是否必填 | 默认值 | 插槽传入值 |
---|---|---|---|---|---|
open | 控制菜单组件显示: v-model:open |
boolean |
true |
false |
false |
default | 默认插槽 | Slot |
false |
- | activeIndex : 当前选中项, item : 当前菜单属性值 |
icon | 图标插槽 | Slot |
false |
- | activeIndex : 当前选中项, item : 当前菜单属性值 |
label | 菜单标题插槽 | Slot |
false |
- | activeIndex : 当前选中项, item : 当前菜单属性值 |
suffix | 菜单后缀插槽 | Slot |
false |
- | activeIndex : 当前选中项, item : 当前菜单属性值 |
指令使用方式 | 描述 | 参数类型 | 参数是否必填 | 默认值 |
---|---|---|---|---|
v-menus | 绑定元素右击打开菜单 | MenuOptions |
true |
- |
v-menus:all | 绑定元素左右击均可打开菜单 | MenuOptions |
true |
- |
v-menus:left | 绑定元素左击打开 | MenuOptions |
true |
- |
v-menus:right | 绑定元素右击打开 | MenuOptions |
true |
- |
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- NeuVector 会是下一个爆款云原生安全神器吗()
- 原生家庭之痛与超越
- 人脸识别|【人脸识别系列】| 实现自动化妆