<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>右键菜单</title>
<!-- 阿里图标 -->
<link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/c/font_4453355_yizetjv4jeo.css" />
<style>
html,
body {
margin: 0;
overflow: hidden;
width: 100%;
}
#test-area {
border: 1px solid black;
width: 100%;
height: 100vh;
background-color: #333333;
display: flex;
align-items: center;
justify-content: center;
}
.menu {
width: 200px;
display: flex;
flex-direction: column;
position: absolute;
border: 1px solid gray;
background-color: #333333;
color: white;
border-radius: 4px;
font-size: 14px;
}
.menu>ul {
list-style: none;
padding: 0;
margin: 0;
}
.menu>ul>li {
padding: 10px;
cursor: pointer;
}
.menu>ul>li:hover {
background-color: #1A6CE7;
}
hr {
margin: 0;
border: 1px solid gray;
}
.submenu {
padding: 0;
left: 200px;
margin-top: -32px;
position: absolute;
display: none;
}
.link {
display: flex;
align-items: center;
justify-content: space-between;
}
.iconfont {
font-size: 14px;
padding-right: 5px;
}
.tip {
font-size: 40px;
color: gray;
}
</style>
</head>
<body>
<!-- 右键点击测试区域 -->
<div id="test-area">
<div class="tip">
点击右键查看效果
</div>
</div>
<!-- 右键菜单1 -->
<div class="menu" id="right-menu" hidden>
<ul>
<li><i class="iconfont icon-chakan1"></i>查看详情</li>
<li><i class="iconfont icon-chakanziduan"></i>打开表字段提示</li>
<hr />
<li><i class="iconfont icon-chakansql"></i>在SQL编辑器查看数据</li>
<li><i class="iconfont icon-a-Property1shengchengshuju"></i>生成测试数据</li>
<li><i class="iconfont icon-jurassic_export-data"></i>导出数据</li>
<li><i class="iconfont icon-jurassic_import-data"></i>导入数据</li>
<li><i class="iconfont icon-shujuqianyi_huaban"></i>数据迁移</li>
<li><i class="iconfont icon-biaogeduibi"></i>表结构对比</li>
<hr />
<li id="generate-sql">
<div class="link">
<span><i class="iconfont icon-shengchengSQL"></i>生成SQL</span>
<span>></span>
</div>
<div class="submenu menu" id="right-menu2">
<ul>
<li>查找</li>
<li>插入</li>
<li>更新</li>
<li>删除</li>
<li>DDL</li>
</ul>
</div>
</li>
<li id="copy">
<div class="link">
<span><i class="iconfont icon-fuzhi"></i>复制</span>
<span>></span>
</div>
<div class="submenu menu" id="right-menu3">
<ul>
<li>Insert语句</li>
<li>CVS语句</li>
</ul>
</div>
</li>
<li><i class="iconfont icon-shanchu"></i>删除</li>
<li><i class="iconfont icon-zhongmingming"></i>重命名</li>
<hr />
<li><i class="iconfont icon-shuaxin"></i>刷新</li>
</ul>
</div>
<script>
//获取窗口内部大小
var width = window.innerWidth;
var height = window.innerHeight;
//用于重新计算窗口大小
window.addEventListener('resize', ()=>{
width = window.innerWidth;
height = window.innerHeight;
})
//默认隐藏右键菜单
hiddenRightMenu('right-menu');
document.getElementById("test-area").addEventListener('contextmenu', (e) => {
e.preventDefault(e); //覆盖原生右键事件
showRightMenu(e, 'right-menu'); //显示菜单
})
document.getElementById("test-area").addEventListener('click', (e) => {
hiddenRightMenu('right-menu');
})
function showRightMenu(e, id) {
var rightMenu = document.getElementById(id);
if(e.clientY + 520 >= height){
rightMenu.style.top = (height - 530) + "px";
}else{
rightMenu.style.top = e.clientY + "px";
}
if(e.clientX + 200 >= width){
rightMenu.style.left = (width - 400) + "px";
}else{
rightMenu.style.left = e.clientX + "px";
}
// rightMenu.style.left = e.clientX + "px";
// rightMenu.style.top = e.clientY + "px";
rightMenu.style.display = 'block';
}
function hiddenRightMenu(id) {
document.getElementById(id).style.display = 'none';
}
//二级菜单事件
document.getElementById('generate-sql').addEventListener('mouseover', (e) => {
document.getElementById('right-menu2').style.display = 'block';
})
document.getElementById('generate-sql').addEventListener('mouseout', (e) => {
document.getElementById('right-menu2').style.display = 'none';
})
document.getElementById('copy').addEventListener('mouseover', (e) => {
document.getElementById('right-menu3').style.display = 'block';
})
document.getElementById('copy').addEventListener('mouseout', (e) => {
document.getElementById('right-menu3').style.display = 'none';
})
</script>
</body>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
使用原生 HTML/CSS/JS 来实现右键菜单,支持二级菜单,支持窗口边沿自动调整位置,源码下载

共2个文件
url:1个
html:1个

0 下载量 186 浏览量
2024-10-15
14:18:02
上传
评论
收藏 2KB ZIP 举报
温馨提示
使用原生 HTML/CSS/JS 来实现右键菜单,支持二级菜单,支持窗口边沿自动调整位置,源码下载 使用原生 HTML/CSS/JS 来实现右键菜单,支持二级菜单,支持窗口边沿自动调整位置 --- > 摘要:本文介绍了一种JavaScript实现的右键菜单,通过监测窗口大小和用户点击位置动态调整菜单的位置,确保在用户点击边界时不会遮挡菜单。代码展示了如何处理右键点击事件、菜单显示和二级菜单的隐藏与显示。 > 摘要由CSDN通过智能技术生成 话不多说,先上截图: ---  `上图是常规屏幕位置点击的效果。` 以下是左上角,右上角,左下角,右下角,点击的效果图片: -- ----- **左上角:**  **右上角:** ![在这里插入图片描述]
资源推荐
资源详情
资源评论






























收起资源包目录



共 2 条
- 1
资源评论


我赚够三千万就收手
- 粉丝: 6288
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于51单片机的电子琴设计.doc
- 网络人物--------.pdf
- 网络安全项目网络建设方案.doc
- 公司网络管理规定.docx
- 网络众筹电影票房分红是真的吗?投资影视被骗该如何要回本金?.doc
- 论项目管理中人的管理.doc
- 网络运营中心产品部经理绩效考核表.doc
- 物理学中角度变换色散谱与多极子分解的光学特性研究及其应用
- 井下漏泄汇通信改造升级项目施工安全技术措施.doc
- 模板电气自动化设备技术协议.doc
- PLC设备技术协议.doc
- 数据库设计理论.doc
- 各种经典的网络拓扑图.ppt
- 数据信息知识智慧的区别和联系(数据挖掘商业智能BI知识必备).doc
- 2019年网站编辑试用期转正工作总结1000字.pdf
- 新版工艺品公司网络营销策划书.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
