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 相关文章推荐
jQuery实战之仿淘宝商城左侧导航效果
Apr 12 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
Underscore源码分析
Dec 30 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
基于vue展开收起动画的示例代码
Jul 05 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
关于JS中的作用域中的问题思考分享
Apr 06 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将回调函数作用到给定数组单元的方法
2014/08/19 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
报关员个人职业生涯规划书
2014/03/12 职场文书
篮球拉拉队口号
2015/12/25 职场文书
美元符号 $
2022/02/17 杂记
如何Tomcat中使用ipv6地址
2022/05/06 Servers