国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JS自定義右鍵菜單實現代碼解析

瀏覽:102日期:2024-04-30 09:02:49

今天來講一個關于右鍵菜單的小demo,拋磚引玉。

首先,我們要用css和html做一個自定義右鍵菜單。

<!--自定義右鍵菜單html代碼--><div id='menu'><div class='menu'>功能1</div><div class='menu'>功能2</div><div class='menu'>功能3</div><div class='menu'>功能4</div><div class='menu'>功能5</div></div>

/*css代碼*/#menu{width: 0; /*設置為0 隱藏自定義菜單*/height: 125px;overflow: hidden; /*隱藏溢出的元素*/box-shadow: 0 1px 1px #888,1px 0 1px #ccc;position: absolute; /*自定義菜單相對與body元素進行定位*/}.menu{width: 130px;height: 25px;line-height: 25px;padding: 0 10px;}

現在我們已經有了自定義菜單,還需要一個很重要的事件 contextmenu。

> contextmenu :當你在頁面上右鍵點擊時,會觸發此事件,并會跳出瀏覽器自帶的右鍵菜單。

所以,我們要做的就是,在觸發contextmenu事件時,取消掉默認行為(也就是阻止瀏覽器顯示自帶的菜單)

通過傳入的事件對象,來確定鼠標的點擊位置,作為left和top的值來進行元素的定位,并顯示自定義菜單

window.oncontextmenu=function(e){//取消默認的瀏覽器自帶右鍵 很重要!!e.preventDefault();//獲取我們自定義的右鍵菜單var menu=document.querySelector('#menu');//根據事件對象中鼠標點擊的位置,進行定位menu.style.left=e.clientX+’px’;menu.style.top=e.clientY+’px’;//改變自定義菜單的寬,讓它顯示出來menu.style.width=’125px’;}//關閉右鍵菜單,很簡單window.onclick=function(e){//用戶觸發click事件就可以關閉了,因為綁定在window上,按事件冒泡處理,不會影響菜單的功能document.querySelector(’#menu’).style.height=0;}

這里只是一個很簡單的例子,contextmenu事件支持所有 HTML 元素,這意味者你可以給不同的元素,自定義不同的右鍵菜單,由于contextmenu事件會冒泡傳播,子節點上觸發的事件,在父節點上也會觸發,所以應該調用對應的函數或者設置對應的屬性值來阻止事件冒泡。

根據事件對象來定位其實很復雜也很簡單,除了clientY和clientX,鼠標事件對象提供了一系列復雜的相關信息,諸如layerX,pageX等等,這些值并不直觀,還存在瀏覽器兼容問題,不過clientX和clientY,可以說是萬金油屬性。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产成人午夜片在线观看 | 亚洲精品国精品久久99热 | 美女擦逼| a级毛片免费在线观看 | 热99re久久精品这里都是免费 | 亚洲精品视频在线看 | 久草免费在线色站 | 一本色道久久爱 | 国产精品久久福利网站 | 美女黄色片免费 | 男人躁女人躁的好爽免费视频 | 一级成人a免费视频 | 成人午夜私人影院入口 | 欧美特黄aaaaaa | 国产九区 | 亚洲精品14p| 精品国产亚洲一区二区在线3d | 国产一区二区三区亚洲欧美 | 欧洲免费无线码二区5 | 99国产在线观看 | 亚洲在线影院 | 男人把女人桶到喷白浆的视频 | 国产不卡一区二区三区免费视 | 精品国产高清在线看国产 | 久草最新网址 | 成年女人毛片免费播放视频m | 色偷偷亚洲男人天堂 | 波多结衣一区二区三区 | 亚洲第一页在线播放 | 在线播放性xxx欧美 在线播放亚洲视频 | 一级成人黄色片 | 2022男人天堂 | 亚洲精品成人 | 欧美日韩一区二区三区视视频 | 成年日韩片av在线网站 | 久久精品女人毛片国产 | 欧美人成一本免费观看视频 | 尹人成人 | 美国免费高清一级毛片 | 爽爽窝窝午夜精品一区二区 | 国产在线高清不卡免费播放 |