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静态的url如何传递
May 03 Javascript
070823更新的一个[消息提示框]组件 兼容ie7
Aug 29 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
详解Vue-基本标签和自定义控件
Mar 24 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
Feb 21 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 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
PHP4在Windows2000下的安装
2006/10/09 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
Python实现身份证号码解析
2015/09/01 Python
Python3 Random模块代码详解
2017/12/04 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
python3中布局背景颜色代码分析
2020/12/01 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
护士节慰问信
2015/02/15 职场文书
异地恋情人节寄语
2015/02/28 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP