练习3_右键菜单.html 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. /* css reset */
  9. ul{
  10. margin: 0;
  11. padding: 0;
  12. }
  13. li{
  14. list-style: none;
  15. }
  16. .bg{
  17. position: fixed;
  18. top: 0;
  19. left: 0;
  20. right: 0;
  21. bottom: 0;
  22. background-color: rgba(0,0,0,0.5);
  23. display: none;
  24. }
  25. .menu{
  26. width: 200px;
  27. height: 300px;
  28. background-color: #fff;
  29. position: fixed;
  30. top: 0;
  31. left: 0;
  32. z-index: 999;
  33. display: none;
  34. }
  35. li{
  36. height: 50px;
  37. text-align: center;
  38. line-height: 50px;
  39. border-bottom: 1px solid #ccc;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <div class="bg"></div>
  45. <div class="menu">
  46. <ul>
  47. <li>菜单一</li>
  48. <li>菜单二</li>
  49. <li>菜单三</li>
  50. </ul>
  51. </div>
  52. <script>
  53. // 获取整个文档
  54. var oDoc = document.documentElement;
  55. // 获取背景蒙板
  56. var oBg = document.getElementsByClassName("bg")[0];
  57. // 获取菜单
  58. var oMenu = document.getElementsByClassName("menu")[0];
  59. // 给整个文档加入右键菜单事件
  60. oDoc.oncontextmenu = function(event){
  61. // 阻止默认事件 preventDefault方法没有代码顺序上的要求
  62. event.preventDefault();
  63. // console.log("右键菜单事件");
  64. // 如果使用return false 阻止默认事件 一定要放在代码部分最后
  65. // return false; // 阻止默认事件
  66. // 显示背景蒙板
  67. oBg.style.display = "block";
  68. // 显示菜单
  69. oMenu.style.display = "block";
  70. // 获取鼠标点击位置
  71. var x = event.clientX;
  72. var y = event.clientY;
  73. // console.log(x,y);
  74. // 设置菜单位置
  75. oMenu.style.top = y + "px";
  76. oMenu.style.left = x + "px";
  77. }
  78. // 给蒙板绑定点击事件
  79. oBg.onclick = function(){
  80. // 隐藏蒙板
  81. oBg.style.display = "none";
  82. // 隐藏菜单
  83. oMenu.style.display = "none";
  84. }
  85. </script>
  86. </body>
  87. </html>