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代码
Aug 13 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
js遍历td tr等html元素
Dec 13 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
JavaScript Length 属性的总结
Nov 02 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
VsCode与Node.js知识点详解
Sep 05 Javascript
前端深入理解Typescript泛型概念
Mar 09 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新建文件自动编号的思路与实现
2011/06/27 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
php邮件发送的两种方式
2020/04/28 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
javascript的this关键字详解
2019/05/20 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python中url标签使用知识点总结
2020/01/16 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
施工资料员的岗位职责
2013/12/22 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
市政管理求职信范文
2014/05/07 职场文书
大学生求职信例文
2014/06/29 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
开发房地产协议书
2014/09/14 职场文书
道歉的话怎么说
2015/05/12 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫