JavaScript 自定义html元素鼠标右键菜单

简介: JavaScript 自定义html元素鼠标右键菜单

自定义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="#">分享</a></li>

           <li><a href="#">收藏</a></li>

           <li><a href="#">举报</a></li>

       </ul>

   </div>

</body>

</html>

 

 

实现效果

 

 

目录
相关文章
WK
|
1月前
|
存储 移动开发 前端开发
HTML5新增了哪些其他元素和属性
这段文字介绍了HTML5中新增的多种元素和属性,包括页面布局元素如header、nav等,表单元素如email、tel输入框等,以及其他元素如canvas、svg等。此外,还介绍了全局及表单属性,例如contenteditable、placeholder等,这些新功能显著增强了HTML5在现代网页设计与开发中的实用性与灵活性。
WK
51 1
|
13天前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
30 1
利用html2canvas插件自定义生成名片信息并保存图片
|
11天前
|
JavaScript
JS鼠标框选并删除HTML源码
这是一个js鼠标框选效果,可实现鼠标右击出现框选效果的功能。右击鼠标可拖拽框选元素,向下拖拽可实现删除效果,简单实用,欢迎下载
25 4
|
23天前
HTML 元素
HTML文档由HTML元素定义,元素包括开始标签、内容和结束标签。某些元素内容为空,可在开始标签中关闭。大多数元素可拥有属性,且元素间可相互嵌套,形成复杂结构。
|
1月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
45 4
WK
|
1月前
|
Web App开发 存储 移动开发
HTML5新增了哪些表单元素
HTML5通过新增多种表单元素和属性,提升了用户体验与交互性。例如,`email`和`url`元素分别验证邮箱地址和网址格式;`number`和`range`便于输入数字及区间值;`date`等元素简化了日期时间的选择;`search`添加搜索图标,`color`提供颜色选择器;`datalist`结合`input`属性给予用户下拉列表选项;`keygen`用于生成密钥对以增强安全性;`output`则用于动态展示计算结果。这些改进共同提高了表单的功能性和易用性。
WK
24 2
|
1月前
|
数据采集 数据安全/隐私保护
html常见的表单元素有哪些,html表单元素有哪些?
html常见的表单元素有哪些,html表单元素有哪些?
16 0
|
1月前
|
JavaScript 前端开发
DOM的概念?获取html元素的方法有哪些?
DOM的概念?获取html元素的方法有哪些?
33 0
|
1月前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
26 0
|
JavaScript 前端开发 索引
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。
744 0
JavaScript 技术篇-js获取表格元素tr、th、td相对于父节点的索引。