vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单

摘要:
该插件适用于新手和老手,因为它是一个高度可扩展的插件,支持您配置常规菜单样式、菜单选项样式、单击回调函数、菜单选项图标,甚至可以定义每个单独选项的样式和图标。如果您在使用中有任何问题,请联系我的QQ:4421217189

今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerightmenu)

  安装
1  npm install rightmenu --save-dev
  开始
//main.js
import vue from "vue";
import rightMenu from "rightMenu";
vue.use(rightMenu);
  例子
<template>
    <div>
        <button v-rightMenu = "menudata">{{
                text
            }}
        </button>
    </div>
</template>
<script>export default{
        name:"demo",
        data(){
            return{
                menudata:{
                    //菜单box的样式   Menu box style
                    boxStyle:"150px;background:#f55;",
                    //菜单选项的样式 Style of menu options
                    optionStyle:"color:#fff;line-height:30px;font-size:15px;",
                    menus:[
                        {
                        /**
                         * content 菜单显示的文字 <支持html> 
                         * callback:菜单点击要触发函数  需要在methods定义 
                         * style : 本项菜单的单独样式 可以覆盖掉optionStyle  
                         * icon : icon图片地址
                         * iconStyle: icon 图片的样式(例如大小等 直接作用于图片)
                         * iconPosition : 支持left / right (其余全部按照left处理);
                         * content The text displayed on the menu(can use html)
                         * callback: Menu clicks to trigger functions need to be defined in methods
                         * style :  The single style of this menu can override option Style
                         * icon : your icon's url
                         * iconStyle : you icon's style ,is image's style
                         * iconPosition :you can use left or right ;The rest are all processed according to left
                         */
                        /**
                         * 字段(field)           类型(type)                 是否可以为空(is can null)    默认值
                         * content            [ html | text ]                       Y                   ""
                         * callback           [  methods function ]                 Y                   return false
                         * style                   [ css ]                          Y                   ""
                         * icon                   [ url ]                           Y                   ""
                         * iconStyle              [ css ]                           Y                   ""
                         * iconPosition           [string]                          Y                   "left"
                        */content:"menu content",
                        callback:"callbackMethods",
                        style:"border-bottom:1px solid #fff;background:#333;line-height:30px;",
                        icon:"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2310514390,3580363630&fm=27&gp=0.jpg",
                        iconStyle:"20px;height:20px;",
                        iconPosition:"left",
                        },
                        {
                        content:"右键菜单二",
                        callback:"otherMethods"}
                    ],
                },
            }
        },
        methods:{
            callbackMethods(){
                //do something
},
            otherMethods(){
                //do something
}
        }
    }
</script>
 补充说明

main.js引入并use之后,会增加全局指令v-rightMenu ,value为一个对象,value内所有api均已在上面例子说明,可为空的参数就可以不填写,都会有默认值或者本身就是可有可无的

 本插件优缺点说明

相比较于大众化的右键插件他有如下优点:

  •   插件精悍短小,运行速度快
  •   不需要单独配置任何边界检测,插件本身自带了
  •   样式完全根据用户需求,自定义菜单的任何地方的样式
  • 使用简单,一个指令即可调用
  • 不会为页面渲染无用的dom,一切都是在你第一次使用时候才会进行加载,并且保证在之后的多次使用中,不会渲染多余dom
  •   支持菜单文字(content字段)使用html ,没错,你可以使用字体图标而不用拘泥于插件自身的图片图标,也可以使用不同的标签来表示你的菜单(当然我也考虑了如此做法,可能需要你必须要完整的吧标签写出来,否则可能会报错,这个问题后期我会进行修复,先看看效果)

缺点说明:

  •   因为本菜单实现的是高度自定义,所以可能会让使用者需要定义很多样式,我只写了一些必要的样式,其余全部需要使用者来自定义(我也不知道这是个缺点还是优点,不过如果我是使用者我会觉得还是插件本身不带有很多的样式为好)
  • 因为设计插件时候,没有考虑到图标问题,所以导致后期有人和我说想要图标的时候,我加入图标功能进去,会导致图片稍微高于文字一些,这个小bug也是css本身自带的,而这个小bug恰好卡在了项目的痛点,也不算痛点吧,只是我工作上有一些事情也必须要尽快处理,而这个问题所以为了弥补这个问题,我加入了content内支持了html,也就是说如果你的要求很高,对视觉上,我建议你用字体图标,至于图片与文字的问题,我会在短期内尽快修复,修复好,我会第一时间发布

本插件旨在实现的是灵活+低配置+扩展性高+指令调用的快速右键菜单,正如你看到的我只需要一个指令,一个json,仅此而已。本插件对于新人还是老手均能适用,因为本插件是一款扩展性极高的插件,支持你配置菜单总样式、菜单选项样式、点击的回调函数、菜单选项的icon甚至你能定义每一单独选项的样式以及icon。最后感谢大家的支持,如果喜欢的话请到github(https://github.com/JinZhenZon/rightmenu)为本插件点个star吧。使用中如有问题,请联系我的QQ:421217189

免责声明:文章转载自《vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇TiDB-入门简介CAD转PDF的软件哪个比较好用?用这两个很方便下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue不同环境下的配置

需求有时候,项目会有很多环境,比如最常用会有一下环境,develop:本地开发环境alpha:测试/预发布环境production:正式/生产环境不同环境下,打包、部署和api的调用都是不同的。如果每次都频繁修改代码,明显是不理智的那么有没有类似于java的springBoot可以按照命令调用不同配置文件启动呢? java -jar -Dspring.pr...

深入Vue

摘要: Vue源码阅读第一步。 原文:深入vue - 源码目录及构建过程分析 公众号:前端小苑 Fundebug经授权转载,版权归原作者所有。 本文主要梳理一下vue代码的目录,以及vue代码构建流程,旨在对vue源码整体有一个认知,有助于后续对源码的阅读。 1. 目录结构 上图是对vue的代码的所有目录进行的梳理,其中源码位于src目录下,下面对...

vue使用videojs控制后台m3u8数据请求

关于Video.js的使用方法就不再说了,有兴趣的请迁跃:https://videojs.com/ VideoJS中并没有stop之类控制后台数据请求的参数,只有暂停 video.pause()方法 ,但是对于后台的请求是不会暂停的,如果我页面有多个Vedio实例需要存在,这样就太影响页面效率了 我使用的是Vue 组件化的VedioJS控件 1、动态控...

适用于 Vue 的播放器组件Vue-Video-Player。

如果h5的标签<vedio>不能满足你的需求,那就用这个组件Vue-Video-Player吧,也许可以覆盖到你的需求。 <video-player ref="videoPlayer" :playsinline="true" :options="playerOptions" >&l...

【转】 一个后端开发的 Vue 笔记【入门级】

【转】 一个后端开发的 Vue 笔记【入门级】 一 前言 最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的,以前也有一定做小程序的基础,感觉还是很相似的,不过对于一些稍复杂的点,感觉还是总结的不够细致,例如插槽,和...

vue循环遍历 v-for

当我们有一组数据需要进行渲染时,就可以通过v-for来完成 1、遍历数组 <!--在遍历的过程中,没有用到索引值--> <ul> <li v-for="item in names">{{item}}</li> </ul> <!--在遍历的过程中,获取下标值--> <ul&g...