下面先給大家介紹下js實現的右鍵菜單功能,具體詳情如下所示:
這一章解決的問題
1、實現右鍵菜單功能代碼。
2、阻止默認事件的實際應用。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>右鍵菜單</title> <style type="text/css"> #menu { position: fixed; left:0; top:0; width:200px; height: 400px; background-color: blue; display: none; } </style> </head> <body> <div id="menu"> </div> <script type="text/javascript"> var menu = document.getElementById("menu"); document.oncontextmenu = function(e) { var e = e || window.event; //鼠標點的坐標 var oX = e.clientX; var oY = e.clientY; //菜單出現後的位置 menu.style.display = "block"; menu.style.left = oX + "px"; menu.style.top = oY + "px"; //阻止浏覽器默認事件 return false;//一般點擊右鍵會出現浏覽器默認的右鍵菜單,寫了這句代碼就可以阻止該默認事件。 } document.onclick = function(e) { var e = e || window.event; menu.style.display = "none" } menu.onclick = function(e) { var e = e || window.event; e.cancelBubble = true; } // document.addEventListener("contextmenu",function(e){ // var e = e || window.event; // e.preventDefault(); // alert("menu"); // },false) </script> </body> </html>
好了,以上代碼詳情是js實現的右鍵菜單功能。下面接著給大家介紹下js 拖曳功能的代碼解析
這一章解決的問題
1、怎樣在網頁中實現拖曳功能。
2、document.documentElement與document.body的區別。
document.documentElement.clientWidth指整個html文檔的寬度,document.body.clientWidth的寬度。這兩者是不一樣的。可以在console控制台通過console.log(document.documentElement)和console.log(document.body)進行測試。
3、getBoundingClientRect().left與offsetLeft的區別。
getBoundingClientRect()用於獲取元素的left、top、right、bottom。offset獲取相對於父級的left和top。getBoundingClientRect()獲取相對於窗口的left、top、right、bottom。
4、e.clientX指的是鼠標點相對於窗口的坐標。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>彈窗</title> <style type="text/css"> #mask { position: fixed; left:0; top:0; width:100%; height: 100%; background-color: hsla(250,100%,50%,0.6); display: none; } #popBox { position: absolute; background-color: #fff; width:200px; height: 200px; /*left:50%; top:50%;*/ /*margin-top: -100px; margin-left: -100px;*/ } </style> </head> <body> <button id="clickBtn">點擊</button> <div id="mask"> <div id="popBox"></div> </div> <script type="text/javascript"> var clickBtn = document.getElementById("clickBtn"); var popBox = document.getElementById("popBox") var mask = document.getElementById("mask"); clickBtn.onclick = function() { mask.style.display = "block"; popBox.style.left = (document.documentElement.clientWidth - popBox.offsetWidth)/2 + "px"; popBox.style.top = (document.documentElement.clientHeight - popBox.offsetHeight)/2 + "px"; } popBox.onclick = function(e) { var e = e || window.event;//e指所有代碼的集合,通過它可以獲取事件的各種屬性。 e.cancelBubble = true;//阻止事件冒泡,即點擊事件不會傳遞到mask這一層,意味著不會觸發點擊mask事件代碼。 } mask.onclick = function() { mask.style.display = "none"; } //拖拽 mousedown->mousemove->mouseup popBox.onmousedown = function(e) { var e = e || window.event; var pos = popBox.getBoundingClientRect();//getBoundingClientRect()用於獲取元素的left、top、right、bottom。offset獲取相對於父級的left和top。getBoundingClientRect()獲取相對於窗口的left、top、right、bottom。 var oX = e.clientX - pos.left;//clientX指相對於窗口的坐標。 var oY = e.clientY - pos.top; document.onmousemove = function(e) { var e = e || window.event; var oLeft = e.clientX - oX; var oTop = e.clientY - oY; popBox.style.left = oLeft + "px"; popBox.style.top = oTop + "px"; if (oLeft<0) { popBox.style.left = 0 + "px"; }; if (oLeft>document.documentElement.clientWidth - popBox.offsetWidth) { popBox.style.left = document.documentElement.clientWidth - popBox.offsetWidth + "px";//document.documentElement.clientWidth指整個html文檔的寬度,document.body.clientWidth的寬度。這兩者是不一樣的。可以在console控制台通過console.log(document.documentElement)和console.log(document.body)進行測試。 } if (oTop<0) { popBox.style.top = 0 + "px"; }; if (oTop > document.documentElement.clientHeight - popBox.offsetHeight) { popBox.style.top = document.documentElement.clientHeight - popBox.offsetHeight + "px"; } } popBox.onmouseup = function() { document.onmousemove = null; } } </script> </body> </html>
以上所述是小編給大家介紹的基於JavaScript實現右鍵菜單和拖拽功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!