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 Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
javascript类型转换示例
Apr 29 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
javascript运动详解
Jul 06 Javascript
浅析JavaScript 调试方法和技巧
Oct 22 Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
Jun 27 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
layui use 定义js外部引用函数的方法
Sep 26 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中创建并处理图象
2006/10/09 PHP
php zend 相对路径问题
2009/01/12 PHP
php对数组排序代码分享
2014/02/24 PHP
php异常处理方法实例汇总
2015/06/24 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python3处理含有中文的url方法
2018/05/10 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书