练习4_DOM右键菜单.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. *{
  9. margin: 0;
  10. padding: 0;
  11. }
  12. li{
  13. list-style: none;
  14. }
  15. .menu-content{
  16. width: 200px;
  17. height: 300px;
  18. border:1px solid black;
  19. display: none;
  20. position: fixed;
  21. background-color: #fff;
  22. z-index: 10;
  23. }
  24. .menu-content ul li{
  25. height: 50px;
  26. line-height: 50px;
  27. padding-left: 20px;
  28. border-bottom: 1px solid black;
  29. }
  30. .mask{
  31. position: fixed;
  32. top: 0;
  33. left: 0;
  34. right: 0;
  35. bottom: 0;
  36. background-color: rgba(0,0,0,0.5);
  37. display: none;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="menu-content">
  43. <ul>
  44. <li>菜单项一</li>
  45. <li>菜单项二</li>
  46. <li>菜单项三</li>
  47. <li>菜单项四</li>
  48. </ul>
  49. </div>
  50. <div class="mask"></div>
  51. <script>
  52. // 第一步获取要控制的元素
  53. // 获取菜单
  54. var oMenu = document.getElementsByClassName("menu-content");
  55. oMenu = oMenu[0];
  56. // 获取整个文档
  57. var oDoc = document.documentElement;
  58. // 获取半透明蒙版
  59. var oMask = document.getElementsByClassName("mask");
  60. oMask = oMask[0];
  61. // 第二步绑定事件 为文档绑定事件 控制菜单显示
  62. oDoc.oncontextmenu = function(e){
  63. // 第三部控制菜单栏显示
  64. oMenu.style.display = "block";
  65. // 控制蒙版显示
  66. oMask.style.display = "block";
  67. // 获取鼠标点击位置 通过事件对象
  68. var x = e.clientX;
  69. var y = e.clientY;
  70. console.log(x,y);
  71. // 第四步 设置菜单栏位置
  72. oMenu.style.top = y + "px";
  73. oMenu.style.left = x + "px";
  74. return false;
  75. }
  76. // 第五步控制菜单隐藏
  77. oMask.onclick = function(){
  78. // 控制菜单栏隐藏
  79. oMenu.style.display = "none";
  80. // 控制蒙版隐藏
  81. oMask.style.display = "none";
  82. }
  83. </script>
  84. </body>
  85. </html>