vue划词右键展示自定义菜单,与划词文字高亮

在项目中需要更改文字划动之后的右键自定义功能。利用到了两个插件

1.vue-context-menu

第一步先来说vue-context-menu

这个是为了右键展示自定义菜单,先来安装

1.1

npm install vue-contextmenu --save

1.2.在main.js里面引入

import VueContextMenu from 'vue-contextmenu'
Vue.use(VueContextMenu)

1.3.在组件中使用。首先需要在div盒子中添加@contextmenu='showMenu'

1.4.在界面中使用vue-context-menu

 1.5.data return中返回数据

contextMenuData: {
        // the contextmenu name(@1.4.1 updated)
        menuName: "demo",
        // The coordinates of the display(菜单显示的位置)
        axis: {
          x: null,
          y: null
        },
        // Menu options (菜单选项)
        menulists: [
          {
            fnHandler: "copyData", // Binding events(绑定事件)
            btnName: "复制" // The name of the menu option (菜单名称)
          },
          {
            fnHandler: "retrievalData",
            btnName: "检索"
          },
          {
            fnHandler: "EncyclopediasData",
            btnName: "百科"
          },
          {
            fnHandler: "feedbackData",
            btnName: "反馈"
          }
        ],
      },

ps:fnHandler为绑定的事件自定义名字在第四步的标签中写入即可

1.6.methods中方法

        1.6.1打开menu菜单

        

showMenu() {
      console.log(event)
      let menu = this.$refs.msgRightMenu
      event.preventDefault();
      var x = event.clientX;
      var y = event.clientY;
      this.contextMenuData.axis = {
        x,
        y
      };

    },

        1.6.2在data return中的fnHandler的方法,写入这里我标了一个来做例子,写在methods中哦

 具体实现效果如下

这时候右键自定义菜单就可以了 ;

2.文本选择后高亮

        2.1.web-highlighter

        同样也是先安装

        

npm i web-highlighter

        2.2在main.js里面引入进去


import Highlighter from 'web-highlighter';
window.highlighter = new Highlighter()

        2.3在组件中使用和引入

        首先需要引入进来


import Highlighter from 'web-highlighter';//高亮(页面中引入)

        给需要的高亮的盒子增加一个ref直接操作dom

        

        在data中定义接收


      highlighter:null,

        在mounted里面使用

  const highlighter = new Highlighter({
      $root: this.$refs.headLine, // 或document.getElementById('headLine')
      exceptSelectors: ['strong'],
      style: {
        className: 'highlight-wrap'
      }
    });
    highlighter
        .on('selection:hover', ({id}) => {
          // hover 时增加 Class
          highlighter.addClass('highlight-wrap-hover', id);
        })
        // .on('selection:hover-out', ({id}) => {
        //   // hover 失去焦点时移除 Class,
        //   highlighter.removeClass('highlight-wrap-hover', id);
        // })
        // .on('selection:create', ({sources}) => {
        //   sources = sources.map(hs => ({hs}));
        //   // save to backend
        //   store.save(sources);
        // });

    highlighter.run()

        ps:最重要的一步一定要让他运行

        在给这个类名添加样式

        


<style>
.highlight-wrap-hover{
  background: #ccc;
  color: #AC4B38;
}
</style>

这样基本就全部结束了来看一下效果

 

要在Vue中实现自定义鼠标右键菜单,你可以借助第三方插件或者自己编写代码来实现。下面是一个使用第三方插件 `vue-contextmenu` 的示例: 首先,安装 `vue-contextmenu` 插件: ```shell npm install vue-contextmenu ``` 然后,在你的Vue项目中,导入并注册 `vue-contextmenu` 插件: ```javascript import VueContextmenu from 'vue-contextmenu'; Vue.use(VueContextmenu); ``` 接下来,在需要添加右键菜单的元素上使用 `v-contextmenu` 指令,并绑定一个方法来定义菜单的内容和行为: ```html <template> <div> <div v-contextmenu="contextMenu"> Right-click me! </div> </div> </template> <script> export default { data() { return { contextMenu: [ { text: '菜单项1', action: 'menuItem1' }, { text: '菜单项2', action: 'menuItem2' }, { text: '菜单项3', action: 'menuItem3' } ] }; }, methods: { menuItem1() { console.log('执行菜单项1的操作'); }, menuItem2() { console.log('执行菜单项2的操作'); }, menuItem3() { console.log('执行菜单项3的操作'); } } }; </script> ``` 在这个例子中,`contextMenu` 数组定义了右键菜单的内容,每个菜单项都有一个 `text` 属性用于显示菜单项的文本,以及一个 `action` 属性用于定义菜单项被点击时要执行的方法。 运行项目后,当你在指定的元素上右键点击时,就会弹出自定义右键菜单,并执行相应的方法。 除了使用第三方插件外,你也可以根据需求自己编写代码来实现自定义鼠标右键菜单。这需要使用原生JavaScript事件来捕获右键点击事件,并自定义菜单的样式和行为。 希望对你有所帮助!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值