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 相关文章推荐
JavaScript的9个陷阱及评点分析
May 16 Javascript
jquery map方法使用示例
Apr 23 Javascript
浅谈JavaScript中null和undefined
Jul 09 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
vue路由跳转传参数的方法
May 06 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 Javascript
Element Breadcrumb 面包屑的使用方法
Jul 26 Javascript
javascript数组includes、reduce的基本使用
Jul 02 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
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
Python实现从订阅源下载图片的方法
2015/03/11 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
个人自我评价范文
2014/02/05 职场文书
供电工程专业求职信
2014/08/09 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2014年稽查工作总结
2014/12/20 职场文书
运动会开幕词
2015/01/28 职场文书
留学推荐信怎么写
2015/03/26 职场文书
安全伴我行主题班会
2015/08/13 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android