JS简单实现自定义右键菜单
今天来讲一个关于右键菜单的小demo,抛砖引玉。
首先,我们要用css和html做一个自定义右键菜单。
<!--自定义右键菜单html代码--> <div id="menu"> <div class="menu">功能1</div> <div class="menu">功能2</div> <div class="menu">功能3</div> <div class="menu">功能4</div> <div class="menu">功能5</div> </div>
/*css代码*/ #menu{width: 0; /*设置为0 隐藏自定义菜单*/ height: 125px; overflow: hidden; /*隐藏溢出的元素*/ box-shadow: 0 1px 1px #888,1px 0 1px #ccc; position: absolute; /*自定义菜单相对与body元素进行定位*/ } .menu{width: 130px; height: 25px; line-height: 25px; padding: 0 10px; }
现在我们已经有了自定义菜单,还需要一个很重要的事件 contextmenu。
> contextmenu :当你在页面上右键点击时,会触发此事件,并会跳出浏览器自带的右键菜单。
所以,我们要做的就是,在触发contextmenu事件时,取消掉默认行为(也就是阻止浏览器显示自带的菜单)
通过传入的事件对象,来确定鼠标的点击位置,作为left和top的值来进行元素的定位,并显示自定义菜单
window.οncοntextmenu=function(e){ //取消默认的浏览器自带右键 很重要!! e.preventDefault();//获取我们自定义的右键菜单 var menu=document.querySelector("#menu");//根据事件对象中鼠标点击的位置,进行定位 menu.style.left=e.clientX+'px'; menu.style.top=e.clientY+'px';//改变自定义菜单的宽,让它显示出来 menu.style.width='125px'; } //关闭右键菜单,很简单 window.οnclick=function(e){//用户触发click事件就可以关闭了,因为绑定在window上,按事件冒泡处理,不会影响菜单的功能document.querySelector('#menu').style.height=0; }
这里只是一个很简单的例子,contextmenu事件支持所有 HTML 元素,这意味者你可以给不同的元素,自定义不同的右键菜单,由于contextmenu事件会冒泡传播,子节点上触发的事件,在父节点上也会触发,所以应该调用对应的函数或者设置对应的属性值来阻止事件冒泡。
根据事件对象来定位其实很复杂也很简单,除了clientY和clientX,鼠标事件对象提供了一系列复杂的相关信息,诸如layerX,pageX等等,这些值并不直观,还存在浏览器兼容问题,不过clientX和clientY,可以说是万金油属性。
转载于:https://www.cnblogs.com/splitgroup/p/6921069.html
JS简单实现自定义右键菜单相关推荐
- 桌面 html 自定义,【极简壁纸 - 技术分享】html js自定义右键菜单方法
自定义右键菜单 极简壁纸2.0 地址: https://bz.zzzmh.cn 目前进度已开发到95% 近期有时间就会分享一下,我在开发过程中用到的一些小技术的简单用法和demo 关于html js右 ...
- Chrome开发自定义右键菜单实现快速跳转到指定页面
一.背景 假设我们在日常的测试过程中,有很多页面需要经常访问,一种方式是我们可以直接把这些页面添加为书签,但这种方式必须记录完整的URL.如果我们有多套环境,比如有测试环境.UAT环境.线上环境,每套 ...
- [读码时间] 自定义右键菜单
说明:代码取自网络,CSS中注释为笔者学习时添加,JS中的注释为原文所有! <!DOCTYPE html> <html> <head><meta charse ...
- linux右键菜单颜色,Linux_自定义右键菜单代码详解, style !-- /*定义菜单 - phpStudy...
自定义右键菜单代码详解 < style > < !-- /*定义菜单方框的样式1*/ .skin0 { position:absolute; text-align:left; wid ...
- antd Tree组件中,自定义右键菜单
最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component {state = {rightClickNodeTreeIt ...
- DevExpress的TreeList实现自定义右键菜单打开文件选择对话框
场景 DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...
- java 树 右键菜单_jQuery实现自定义右键菜单的树状菜单效果
本文实例讲述了jQuery实现自定义右键菜单的树状菜单效果.分享给大家供大家参考.具体如下: 这是一款基于jQuery的自定义右键菜单,在树状结构的子节点(下级没有节点)上单击右键才会弹出自定义菜单, ...
- vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解
在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id&qu ...
- win10 自定义右键菜单
win10 自定义右键菜单 首先使用快捷键 win + r 打开运行窗口,在其中输入 regedit 然后点击 确定 进入注册表后,按照顺序找到位置: HKEY_LOCAL_MACHINE\SOFTW ...
最新文章
- Module not found: Can‘t resolve ‘@babel/runtime/helpers/esm/extends‘ in ‘C:\Users\wdg\Desktop\Ant-De
- 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
- 角点检测——发现图像的特征
- SQL Server在存储过程中编写事务处理代码的三种方法
- Sightseeing Cows POJ - 3621
- MySQL 高级 —— MVCC 多版本并发控制
- [Java] 蓝桥杯ALGO-42 算法训练 送分啦
- CentOS下ELK收集Nginx日志
- Go语言:运行代码报错main redeclared in this block 	previous declaration at .\test.go:5:6
- 怎么做分布式存储的面试?
- 工程图字体宋体仿宋_电纸书kindle字体推荐——耐看、悦目、经典
- 萤石云谷歌禁用flash_mac chrome屏蔽flash插件怎么办 mac chrome flash启用方法
- 产品结构图 = 产品功能结构图 + 产品信息结构图
- tail关键字查询日志
- 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)...
- 淘宝上大量贩卖微信号,这些人买这么多微信号目的是
- 计算机房灭火房间用的系数,消防安全知识试题(三)(2)
- BZOJ 4605: 崂山白花蛇草水 树套树 权值线段树套kdtree
- 昂达v80 plus linux,昂达(ONDA)V80 Plus平板电脑整体性能评测-ZOL中关村在线
- STM32中文参考手册_V10