JavaScript 自定义html元素鼠标右键菜单功能


Posted in Javascript onDecember 02, 2019

自定义html元素鼠标右键菜单

实现思路

在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值

编码实现

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
  window.onload = function(){
  var menu = document.getElementById('menu');
  document.body.oncontextmenu = function(e){ // 自定义body元素的鼠标事件处理函数
    var e = e || window.event;
    e.preventDefault(); //阻止系统右键菜单 IE8-不支持
    // 显示自定义的菜单调整位置
    let scrollTop =
        document.documentElement.scrollTop || document.body.scrollTop;// 获取垂直滚动条位置
    let scrollLeft =
        document.documentElement.scrollLeft || document.body.scrollLeft;// 获取水平滚动条位置
    menu.style.display = 'block';
    menu.style.left = e.clientX + scrollLeft + 'px';
    menu.style.top = e.clientY + scrollTop + 'px';
  }
  // 鼠标点击其他位置时隐藏菜单
  document.onclick = function(){
    menu.style.display = 'none';
  }
}
</script>
<style>
  *{
    margin: 0;
    padding: 0;
  }
  p{
    margin-top: 200px; 
  }
  ul li{
    list-style-type: none;
    margin: 10px 0;
    text-align: center;
  }
  #menu{
    border:1px solid #ccc;
    background: #eee;
  position: absolute; // 设置菜单为绝对位置
    width: 100px;
    height: 120px;
    display: none;
  }
</style>
</head>
<body style="overflow:auto">
  <div id="box" style="height:5000px; width:5000px">让body元素出现滚动条用的div</div>
  <div id="menu">
    <ul>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >分享</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >收藏</a></li>
      <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >举报</a></li>
    </ul>
  </div>
</body>
</html>

实现效果

JavaScript 自定义html元素鼠标右键菜单功能

总结

以上所述是小编给大家介绍的JavaScript 自定义html元素鼠标右键菜单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JQuery 简便实现页面元素数据验证功能
Mar 24 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
使用javascript实现监控视频播放并打印日志
Jan 05 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
Aug 13 Javascript
JavaScript数组排序小程序实现解析
Jan 13 Javascript
VUE 动态组件的应用案例分析
Dec 02 #Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
Dec 02 #Javascript
vue 动态表单开发方法案例详解
Dec 02 #Javascript
vue 开发之路由配置方法详解
Dec 02 #Javascript
vue 开发企业微信整合案例分析
Dec 02 #Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 #Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 #Javascript
You might like
那些年一起学习的PHP(二)
2012/03/21 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
Python PIL图片添加字体的例子
2019/08/22 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
python实现canny边缘检测
2020/09/14 Python
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
数控技术学生的自我评价
2014/02/15 职场文书
五四青年节演讲稿
2014/05/26 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android