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 相关文章推荐
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
javascript (用setTimeout而非setInterval)
Dec 28 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 Javascript
js点击文本框后才加载验证码实例代码
Oct 20 Javascript
javascript闭包(Closure)用法实例简析
Nov 30 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
解决vue处理axios post请求传参的问题
Mar 05 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
vue使用websocket的方法实例分析
Jun 22 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实现删除非站内外部链接实例代码
2014/06/17 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
javascript document.referrer 用法
2009/04/30 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jQuery实现冻结表格行和列
2015/04/29 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
python实现统计代码行数的方法
2015/05/22 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python 正则表达式的高级用法
2016/12/04 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
数据员岗位职责
2013/11/19 职场文书
致400米运动员广播稿
2014/02/07 职场文书
党员目标管理责任书
2014/07/25 职场文书
孩子教育的心得体会
2014/09/01 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
兵马俑导游词
2015/02/02 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript