原生js自定义右键菜单
本文实例为大家分享了js自定义右键菜单的具体代码,供大家参考,具体内容如下
1、右键菜单触发的基本过程
实现自定义右键菜单我们首先需要了解以下内容:
浏览器默认的右键菜单触发的基本过程
1)、单击右键,菜单出现
2)、菜单出现,鼠标箭头一直在菜单左上角
3)、再换个位置点击右键,原菜单消失,新菜单出现在指定位置
4)、点击左键,中键,菜单消失
以上为大致实现过程,不全面,仅供参考
也许文字过于抽象,我们来看看代码吧:
2、HTML结构
- 返回(B) Alt+向左箭头
- 前进(F) Alt+向右箭头
- 重新加载(R) Ctrl+R
- 另存为(A)... Ctrl+S
- 打印(P).. Ctrl+P
- 投射(C)... Ctrl+R
- 查看你个锤代码(V) Ctrl+U
- 检查你个瓜皮(N) Ctrl+Shift+L
3、CSS样式
*{ margin: 0; padding: 0; }li{ list-style: none; }.rightmenu{ width: 250px; background: #fff; border: 1px solid #bababa; position: fixed; box-sizing: border-box; display: none; }.rightmenu ul{ border-bottom: 1px solid #e9e9e9; }.rightmenu ul li{ height: 30px; line-height: 30px; color: #000; padding: 0 25px; box-sizing: border-box; margin: 2px 0; cursor: default; }.rightmenu ul li:hover{ background: #ebebeb; }.rightmenu ul li a{ font-size: 12px; color: #000; cursor: default; text-decoration: none; }.rightmenu ul li span{ float: right; font-size: 12px; color: #000; }.box{ width: 100px; height: 100px; background: red; }
.rightmenu设置display:none是因为右键菜单本身是隐藏了因为点击了才出现,倘若不加这句,菜单会出现在页面的左上角。
3、js实现过程
分析:
【原生js自定义右键菜单】①:浏览器本身就有右键菜单,我们也要做右键菜单,所以应当阻止浏览器的右键,这里可以用到preventDefault(),这个方法有着阻止默认事件的功能,科普一下,什么是默认事件:
例如: 点我可以知道这是可以跳转到百度的,所以是有个跳转时间的,这个事件我们没有去用js实现,他是默认的,所以称之为默认事件,同理,浏览器右键菜单。
②前面我们说了菜单出现,鼠标箭头一直在菜单左上角,这是怎么实现的呢,这涉及到event里面的事件发生坐标了,我们点击的位置就是我们右键点击事件发生的位置,可以用坐标来解释这个位置,clientX(事件发生点和可视区域的位置),offsetX(事件发生点和父级元素的位置),pageX(事件发生点和页面的位置),screenX(事件发生点和屏幕的位置),这里我们用offsetX/Y,因为我们是在BOW中点击,所以具体原因大家百度一下就直道了,我们还是看代码吧,代码里标注的很详细。
以上仅供参考,更多的功能实现都是差不多的原理,好了,结束了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- SpringBoot调用公共模块的自定义注解失效的解决
- python自定义封装带颜色的logging模块
- 列出所有自定义的function和view
- NeuVector 会是下一个爆款云原生安全神器吗()
- 原生家庭之痛与超越
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- 自定义MyAdapter
- 自我探索之原生家庭1
- 云原生微服务技术趋势解读
- 韵达基于云原生的业务中台建设 | 实战派