91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

原生js如何自定義右鍵菜單

發布時間:2021-09-08 11:51:50 來源:億速云 閱讀:224 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關原生js如何自定義右鍵菜單的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體內容如下

1、右鍵菜單觸發的基本過程

實現自定義右鍵菜單我們首先需要了解以下內容:

瀏覽器默認的右鍵菜單觸發的基本過程

1)、單擊右鍵,菜單出現
2)、菜單出現,鼠標箭頭一直在菜單左上角
3)、再換個位置點擊右鍵,原菜單消失,新菜單出現在指定位置
4)、點擊左鍵,中鍵,菜單消失

以上為大致實現過程,不全面,僅供參考

也許文字過于抽象,我們來看看代碼吧:

2、HTML結構

<!--start右鍵菜單的結構-->
<div id="rightmenu" class="rightmenu">
 <ul>
  <li disabled="disabled">
        <a href="#" >返回(B)</a> 
        <span>Alt+向左箭頭</span></li>
  <li><a href="#" >前進(F)</a> <span>Alt+向右箭頭</span></li>
  <li><a href="#" >重新加載(R)</a> <span>Ctrl+R</span></li>
 </ul>
 <ul>
  <li><a href="#" >另存為(A)...</a> <span>Ctrl+S</span></li>
        <li><a href="#" >打印(P)..</a> <span>Ctrl+P</span></li>
  <li><a href="#" >投射(C)...</a> <span>Ctrl+R</span></li>
 </ul>
 <ul>
  <li><a href="#" >查看你個錘代碼(V)</a> <span>Ctrl+U</span></li>
     <li><a href="#" >檢查你個瓜皮(N)</a> <span>Ctrl+Shift+L</span></li>
 </ul>
</div>
<!--end右鍵菜單的結構-->
  
<div class="box"></div>

3、CSS樣式

*{
 margin: 0;
 padding: 0;
}
li{
 list-style: none;
}
.rightmenu{
 width: 250px;
 background: #fff;
 border: 1px solid #bababa;
 position: fixed;
 box-sizing: border-box;
 display: none;
}
.rightmenu ul{
 border-bottom: 1px solid #e9e9e9;   
}
.rightmenu ul li{
 height: 30px;
 line-height: 30px;
 color: #000;
 padding: 0 25px;
 box-sizing: border-box;
 margin: 2px 0;
     cursor: default;
}
.rightmenu ul li:hover{
 background: #ebebeb;
}
.rightmenu ul li a{
 font-size: 12px;
 color: #000;
 cursor: default;
 text-decoration: none;
}
.rightmenu ul li span{
 float: right;
 font-size: 12px;
 color: #000;
}
.box{
 width: 100px;
 height: 100px;
 background: red;
}

.rightmenu設置display:none是因為右鍵菜單本身是隱藏了因為點擊了才出現,倘若不加這句,菜單會出現在頁面的左上角。

3、js實現過程

分析:

①:瀏覽器本身就有右鍵菜單,我們也要做右鍵菜單,所以應當阻止瀏覽器的右鍵,這里可以用到preventDefault(),這個方法有著阻止默認事件的功能,科普一下,什么是默認事件:

例如: 點我可以知道這是可以跳轉到百度的,所以是有個跳轉時間的,這個事件我們沒有去用js實現,他是默認的,所以稱之為默認事件,同理,瀏覽器右鍵菜單。

②前面我們說了菜單出現,鼠標箭頭一直在菜單左上角,這是怎么實現的呢,這涉及到event里面的事件發生坐標了,我們點擊的位置就是我們右鍵點擊事件發生的位置,可以用坐標來解釋這個位置,clientX(事件發生點和可視區域的位置),offsetX(事件發生點和父級元素的位置),pageX(事件發生點和頁面的位置),screenX(事件發生點和屏幕的位置),這里我們用offsetX/Y,因為我們是在BOW中點擊,所以具體原因大家百度一下就直道了,我們還是看代碼吧,代碼里標注的很詳細。

<script>
 document.addEventListener('DOMContentLoaded',function(){
 //獲取
 var rightMenu=document.getElementById('rightmenu');
 //1.首先將右鍵默認行為關閉
 window.oncontextmenu=function(event){
  event.preventDefault();
  //2.設置右鍵行為
  rightMenu.style.display="none";//重置已經block的菜單
  rightMenu.style.display="block";
  rightMenu.style.left=event.offsetX+'px';
   rightMenu.style.top=event.offsetY+'px';
  }
  //3.根據真實瀏覽器的右鍵來看左鍵是可以取消右鍵菜單的
  document.onclick=function(event){
   rightMenu.style.display="none";
  }
  //4.功能并不完善,需要給每個li寫BOM事件,這里暫時不寫了
  //5.仔細檢查你會發現當右鍵在自己定義的右鍵菜單上時,會出現一點小情況,可以自己測試
    })
</script>

感謝各位的閱讀!關于“原生js如何自定義右鍵菜單”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

大竹县| 襄樊市| 枝江市| 涿鹿县| 无锡市| 肇源县| 会宁县| 崇信县| 县级市| 萝北县| 岳普湖县| 枣庄市| 永靖县| 密山市| 阳新县| 陕西省| 柞水县| 德化县| 石首市| 安龙县| 邻水| 资兴市| 麻城市| 桐柏县| 蓝山县| 西平县| 哈尔滨市| 牡丹江市| 于田县| 南溪县| 梅河口市| 灵石县| 会泽县| 浦北县| 达拉特旗| 平泉县| 息烽县| 清苑县| 万州区| 游戏| 乐清市|