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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. body{
  10. margin: 0;
  11. }
  12. li{
  13. list-style: none;
  14. }
  15. ul{
  16. margin: 0;
  17. padding: 0;
  18. }
  19. .box{
  20. /* width: 100vw;
  21. height: 100vh; */
  22. position: fixed;
  23. top: 0;
  24. left: 0;
  25. right: 0;
  26. bottom: 0;
  27. background-color: rgba(0,0,0,0.5);
  28. }
  29. .menu{
  30. width: 200px;
  31. height: 400px;
  32. background-color: #fff;
  33. position: fixed;
  34. top:200px;
  35. left: 200px;
  36. }
  37. .menu li{
  38. padding:10px 20px;
  39. border-bottom: 1px solid #999;
  40. }
  41. .container{
  42. display: none;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <div class="container">
  48. <!-- 黑色半透明背景蒙版 -->
  49. <div class="box"></div>
  50. <!-- 菜单栏 -->
  51. <div class="menu">
  52. <ul>
  53. <li>菜单一</li>
  54. <li>菜单二</li>
  55. <li>菜单三</li>
  56. </ul>
  57. </div>
  58. </div>
  59. <script>
  60. // 获取dom元素 整个文档
  61. var oDom = document.documentElement;
  62. // 蒙版和菜单区域
  63. var oContainer = document.getElementsByClassName("container")[0];
  64. // 蒙版
  65. var oBox = document.getElementsByClassName("box")[0];
  66. // 菜单
  67. var oMenu = document.getElementsByClassName("menu")[0];
  68. // 右键显示菜单
  69. oDom.oncontextmenu = function(e){
  70. // 记录点击位置
  71. var x = e.clientX;
  72. var y = e.clientY;
  73. // 设置菜单位置
  74. oMenu.style.left = x+"px";
  75. oMenu.style.top = y+"px";
  76. // 显示菜单及蒙版
  77. oContainer.style.display = "block";
  78. // 阻止默认事件
  79. e.preventDefault();
  80. // return false;
  81. }
  82. // 点击蒙版隐藏菜单
  83. oBox.onclick = function(){
  84. oContainer.style.display = "none";
  85. }
  86. </script>
  87. </body>
  88. </html>