用到的知識點: oncontextmenu(右鍵點擊事件,指用戶右擊鼠標時觸發並打開上下文菜單)
所以,我們要知道的就是,在觸發contextmenu事件時,取消默認行為(也就是阻止瀏覽器顯示自帶的菜單)
通過傳入的事件對象,來確定鼠標的點擊位置,作為left和top的值來進行元素的定位,並顯示自定義菜單
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>右鍵菜單</title> <style> /*清除reset css*/ ul{ padding:0; margin: 0; list-style: none; } /*main*/ #list{ width:160px; height:200px; border:1px solid #f4979a; box-shadow:0px 0px 5px #f4979a; display: none; /*一定要用絕對定位*/ position: absolute; } #list li{ height:50px; line-height:50px; font-size:16px; color:#ea6a66; text-align:center; } </style> </head> <body> <ul id="list"> <li>下載</li> <li>刪除</li> <li>移動到...</li> <li>重命名</li> </ul> </body> <!--js--> <script> //************獲取元素*********** var listBox = document.getElementById('list');//獲取自定義右鍵菜單 //鼠標右鍵點擊事件 document.oncontextmenu = function(ev){ //兼容性寫法示例: var ev = ev || event;//或(||)書寫順序有講究,不能隨意換 //阻止默認行為 ev.preventDefault(); //記錄當前的坐標(x軸和y軸) var x = ev.clientX; var y = ev.clientY; listBox.style.display = 'block';//右鍵點擊時顯示菜單框 listBox.style.left = x + 'px'; listBox.style.top = y + 'px'; //關閉右鍵 document.onclick = function(){ listBox.style.display = 'none';//再次點擊時隱藏菜單框 } } </script> </html>
實例如下: