| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- /* css reset */
- ul{
- margin: 0;
- padding: 0;
- }
- li{
- list-style: none;
- }
- .bg{
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: rgba(0,0,0,0.5);
- display: none;
- }
- .menu{
- width: 200px;
- height: 300px;
- background-color: #fff;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 999;
- display: none;
- }
- li{
- height: 50px;
- text-align: center;
- line-height: 50px;
- border-bottom: 1px solid #ccc;
- }
- </style>
- </head>
- <body>
- <div class="bg"></div>
- <div class="menu">
- <ul>
- <li>菜单一</li>
- <li>菜单二</li>
- <li>菜单三</li>
- </ul>
- </div>
- <script>
- // 获取整个文档
- var oDoc = document.documentElement;
- // 获取背景蒙板
- var oBg = document.getElementsByClassName("bg")[0];
- // 获取菜单
- var oMenu = document.getElementsByClassName("menu")[0];
- // 给整个文档加入右键菜单事件
- oDoc.oncontextmenu = function(event){
- // 阻止默认事件 preventDefault方法没有代码顺序上的要求
- event.preventDefault();
- // console.log("右键菜单事件");
- // 如果使用return false 阻止默认事件 一定要放在代码部分最后
- // return false; // 阻止默认事件
- // 显示背景蒙板
- oBg.style.display = "block";
- // 显示菜单
- oMenu.style.display = "block";
- // 获取鼠标点击位置
- var x = event.clientX;
- var y = event.clientY;
- // console.log(x,y);
- // 设置菜单位置
- oMenu.style.top = y + "px";
- oMenu.style.left = x + "px";
- }
- // 给蒙板绑定点击事件
- oBg.onclick = function(){
- // 隐藏蒙板
- oBg.style.display = "none";
- // 隐藏菜单
- oMenu.style.display = "none";
- }
- </script>
- </body>
- </html>
|