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 21 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
jQuery.form.js的使用详解
Jun 14 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
vue不操作dom实现图片轮播的示例代码
Dec 18 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 Javascript
JavaScript实现简单图片切换
Apr 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
php通过ajax实现双击table修改内容
2014/04/28 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
常用DOM整理
2015/06/16 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python json模块使用实例
2015/04/11 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
详细的大学生创业计划书模板
2014/01/27 职场文书
中学生自我鉴定
2014/02/04 职场文书
班班通项目实施方案
2014/02/25 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
高中军训感想
2015/08/07 职场文书
推普标语口号大全
2015/12/26 职场文书