首页 > 其他分享 >vue.js3:div上添加右键菜单([email protected])

vue.js3:div上添加右键菜单([email protected])

时间:2022-11-08 16:01:52浏览次数:77  
标签:style vue menu 37 3.2 右键 document

一,js代码:

<template>
  <div>
    <div style="width:800px;margin: auto;display: flex;flex-direction: column;">
      <div>请选择上传图片:
        <input type="file" id="back" ref="backfile" accept="image/*" @change="handleFile" /></div>
      <div id="imgContainer" style="position: relative;margin-left:150px;margin-top:10px;width:500px;height:500px;
overflow: hidden;background: lightgray;" > <img id="img" :src="imgSrc" style="" /> </div> <div style="margin-left:150px;"> <el-slider v-model="roundValue" :min="0" :max="roundMax" @input="setRounded" style="width:500px;" /> </div> <div id="dpiBtn" style="display: none;"> <input type="button" value="保存图片" @click="makeCanvas" /> </div> </div> <!-- 自定义鼠标右键菜单 --> <div id="menu"> <ul> <li @click="menuClick('down')">保存图片</li> <li @click="menuClick('about')">关于本站</li> </ul> </div> </div> </template> <script> import {ref,onMounted,nextTick} from "vue"; export default { name: "RoundedCorner", setup() { onMounted(() => { nextTick(()=>{ let item = document.getElementById('imgContainer'); item.addEventListener('contextmenu', (e) => { e.preventDefault();//阻止其他事件 // 得到自定义的菜单调整位置 let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;// 获取垂直滚动条位置 let scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;// 获取水平滚动条位置 //显示右键菜单 let menu = document.getElementById('menu'); menu.style.display = 'block'; menu.style.left = e.clientX + scrollLeft + 'px'; menu.style.top = e.clientY + scrollTop + 'px'; }) }) }) document.onclick = function () { document.getElementById('menu').style.display = 'none'; } ... //右键菜单点击事件 const menuClick = (type) => { if (type == 'about') { alert('图片工具站:twitter.com'); } else if (type == 'down') { makeCanvas(); } } return { menuClick, } } } </script> <style scoped> /* 自定义右键菜单 */ #menu{ display: none; position: absolute; width: 150px; border:1px solid #ccc; background: #eee; } #menu ul { margin: 0px 0; } #menu li{ height: 30px; line-height: 30px; color: #21232E; font-size: 12px; width: 150px; list-style: none; float: left; text-align: center; cursor: default; list-style-type: none; margin-left: -40px; } #menu li:hover { background-color: #cccccc; } </style>

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: [email protected]

二,测试效果:

三,查看vue框架的版本:

root@lhdpc:/data/vue/imgtouch# npm list vue
[email protected] /data/vue/imgtouch
├─┬ @vue/[email protected]
│ └─┬ @vue/[email protected]
│   └── [email protected] deduped
└─┬ [email protected]
  └─┬ @vue/[email protected]
    └── [email protected] deduped 

 

标签:style,vue,menu,37,3.2,右键,document
From: https://www.cnblogs.com/architectforest/p/16869988.html

相关文章

  • Vue3+Taro+NutUI 微信小程序使用canvas组件完成电子签名功能
    使用Taro小程序开发框架中的canvas组件实现电子签名功能,实现签名时屏幕自动横屏,可清空签名重签,可保存导出图片的64位码。请将手机屏幕横向在区域内进行签名重签完......
  • antdv (Ant Design of Vue) 复杂表单验证问题解决方法
    我们知道,在简单的表单中,都是一项一项往下排列的,验证的时候也按照字段一一对把规则写好就能验证,如下图  但是遇到了复杂场景的表单验证,比如一项由多个input、checkbox......
  • VUE2 实现一个页面 调用 另一个页面的函数
    今天我在Vue 需要实现 一个这样的功能在App.vue页面中 要实现 调用 另一个页(ExtensionMonitor.vue)中的函数 并将参数 传过去下面将实现的步骤写下来,供大家参考1.......
  • JeecgBoot 3.4.3-Vue2 版本发布,Vue2版前端UI专项升级
    JeecgBootvue2版前端UI代码更新到3.4.3最新版,兼容最新版的后台(3.4.3、3.4.3-GA)。发版日期:2022-11-08源码下载前端:https://github.com/jeecgboot/ant-design-vue-jee......
  • 写过vue自定义指令吗,原理是什么?.m
    背景看了一些自定义指令的文章,但是探究其原理的文章却不多见,所以我决定水一篇。如何自定义指令?其实关于这个问题官方文档上已经有了很好的示例的,我们先来温故一下。除......
  • vue项目echarts图表自适应
     1、首先新建一个js文件,用来自定义一个全局指令:  2、然后在main.js中引入:  3、然后在自己使用的echarts上加入此指令! ......
  • vue源码分析-v-model的本质
    双向数据绑定这个概念或者大家并不陌生,视图影响数据,数据同样影响视图,两者间有双向依赖的关系。在响应式系统构建的上,中,下篇我已经对数据影响视图的原理详细阐述清楚了。而......
  • vue源码中的渲染过程是怎样的
    4.1VirtualDOM4.1.1浏览器的渲染流程当浏览器接收到一个Html文件时,JS引擎和浏览器的渲染引擎便开始工作了。从渲染引擎的角度,它首先会将html文件解析成一个DOM树,与此......
  • vue源码分析-diff算法核心原理
    这一节,依然是深入剖析Vue源码系列,上几节内容介绍了VirtualDOM是Vue在渲染机制上做的优化,而渲染的核心在于数据变化时,如何高效的更新节点,这就是diff算法。由于源码中关于d......
  • 6个在Vue.js编写更好v-for循环的技巧
    https://learnvue.co/2020/02翻译|杜尼卜在vuejs中,v-for循环是每个项目都会使用的东西,它允许您在模板代码中编写for循环。在最基本的用法中,它们的用法如下。<ul><liv-f......