Vue3.0实现原生高度可自定义菜单组件vue3-menus|Vue3.0实现原生高度可自定义菜单组件vue3-menus
vue3-menus
Vue3.0 自定义右键菜单
Vue3.0 原生实现完全自定义右键菜单组件, 零依赖,可根据可视区域自动调节显示位置,可支持插槽完全重写每一项菜单
文章图片
在线演示
- 完整菜单功能演示
- 复制粘贴演示
npm install vue3-menus
【Vue3.0实现原生高度可自定义菜单组件vue3-menus|Vue3.0实现原生高度可自定义菜单组件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 |
属性 | 描述 | 类型 | 是否必填 | 默认值 | |
---|---|---|---|---|---|
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 |
属性 | 描述 | 类型 | 是否必填 | 默认值 | 插槽传入值 |
---|---|---|---|---|---|
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 会是下一个爆款云原生安全神器吗()
- 原生家庭之痛与超越
- 人脸识别|【人脸识别系列】| 实现自动化妆