fengchuanyu 5 дней назад
Родитель
Сommit
66bb3016a4
1 измененных файлов с 89 добавлено и 0 удалено
  1. 89 0
      4_BOM&DOM/练习3_右键菜单.html

+ 89 - 0
4_BOM&DOM/练习3_右键菜单.html

@@ -0,0 +1,89 @@
+<!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>