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


Posted in Javascript onNovember 29, 2018

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

安装

 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:"width: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:"width: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吧。

以上所述是小编给大家介绍的vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
table行随鼠标移动变色示例
May 07 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
Mar 28 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 jQuery
微信小程序云开发之使用云函数
May 17 Javascript
vue项目或网页上实现文字转换成语音播放功能
Jun 09 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
简述vue路由打开一个新的窗口的方法
Nov 29 #Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 #Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 #Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 #Javascript
js中this的指向问题归纳总结
Nov 28 #Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 #Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 #Javascript
You might like
PHP简介
2006/10/09 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
为python设置socket代理的方法
2015/01/14 Python
理解python中生成器用法
2017/12/20 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
jupyter notebook清除输出方式
2020/04/10 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
环卫工人慰问信
2015/02/15 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
倡议书的格式写法
2015/04/28 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
中秋节晚会开场白
2015/05/29 职场文书
指导教师推荐意见
2015/06/05 职场文书
python 调用js的四种方式
2021/04/11 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
python3 字符串str和bytes相互转换
2022/03/23 Python