js实现自定义右键菜单


Posted in Javascript onMay 18, 2020

本文实例为大家分享了js实现右键菜单的具体代码,供大家参考,具体内容如下

原理:

1.屏蔽默认的右键菜单

2.点击右键获取位置,让自定义菜单到点击位置上

3.点击左键,自定义菜单消失

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>右键菜单练习</title>
 <style>
 *{
  margin: 0;
  /*padding: 0;*/
 }
 ul{
  width: 120px;
  height: 150px;
  background-color: rgb(204,204,204);
  font-size: 22px;
  list-style: none;
  line-height: 50px;
  position: fixed;
  display: none;
 }
 li{
  background-color: rgb(238,238,238);
  padding-left: 15px;
 }
 </style>
</head>
<body>
<ul id="ul">
 <li>复制</li>
 <li>剪切</li>
 <li>粘贴</li>
</ul>
<script>
 //给document 添加 oncontextmenu 事件 取消默认的右键菜单的行为。
 //点击右键的时候,获得点击的位置。
 var ul = document.getElementById('ul');
 document.oncontextmenu=function(e){
 e=e||window.event;
 //屏蔽样式
 e.preventDefault?e.preventDefault():(e.returnValue=false);
 //获取坐标
 var x=e.clientX;//视口的位置
 var y=e.clientY;

 //显示菜单
 ul.style.display='block';
 ul.style.top=y+'px';
 ul.style.left=x+'px';
 };
 //点击左键 自定义菜单消失
 document.onclick=function () {
 ul.style.display='none';
 };
 //给每个li添加 鼠标进入(onmouseover)和鼠标离开(onmouseout)的事件
 var lis = document.querySelectorAll('li');
 for (let i = 0; i < lis.length; i++) {
 lis[i].onmouseover=function () {
  lis[i].style.backgroundColor='rgb(204,204,204)';
 };
 lis[i].onmouseout=function () {
  lis[i].style.backgroundColor='rgb(238,238,238)';
 }
 }

</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何学习Javascript入门指导
Nov 01 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
60行js代码实现俄罗斯方块
Mar 31 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
JS脚本实现网页自动秒杀点击
Jan 11 Javascript
微信小程序如何获取用户手机号
Jan 26 Javascript
React+Webpack快速上手指南(小结)
Aug 15 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
Vue组件模板的几种书写形式(3种)
Feb 19 Javascript
微信小程序手动添加收货地址省市区联动
May 18 #Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 #Javascript
django简单的前后端分离的数据传输实例 axios
May 18 #Javascript
vue+koa2搭建mock数据环境的详细教程
May 18 #Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 #Javascript
react 生命周期实例分析
May 18 #Javascript
react使用CSS实现react动画功能示例
May 18 #Javascript
You might like
php 静态化实现代码
2009/03/20 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
详解JS面向对象编程
2016/01/24 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
Python Socket编程入门教程
2014/07/11 Python
Python3基础之条件与循环控制实例解析
2014/08/13 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
Java如何调用外部Exe程序
2015/07/04 面试题
银行实习的自我鉴定
2013/12/10 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
四个太阳教学反思
2014/02/01 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
离婚协议书怎么写
2015/01/26 职场文书
新教师个人工作总结
2015/02/06 职场文书
2016寒假假期总结
2015/10/10 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
教你使用TensorFlow2识别验证码
2021/06/11 Python