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 相关文章推荐
给ListBox添加双击事件示例代码
Dec 02 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
Oct 16 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
Vue全局loading及错误提示的思路与实现
Aug 09 Javascript
简述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验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
python实现接口并发测试脚本
2019/06/25 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
什么是python的函数体
2020/06/19 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
毕业自我鉴定范文
2013/11/06 职场文书
表演方阵解说词
2014/02/08 职场文书
入股协议书范本
2014/04/14 职场文书
法定代表人证明书
2014/11/28 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python