最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3實(shí)現(xiàn)鼠標(biāo)右鍵顯示菜單,點(diǎn)擊其他地方消失問(wèn)題

 更新時(shí)間:2024年04月26日 09:30:30   作者:一個(gè)無(wú)所事事的程序猿  
這篇文章主要介紹了vue3實(shí)現(xiàn)鼠標(biāo)右鍵顯示菜單,點(diǎn)擊其他地方消失問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3觸發(fā)鼠標(biāo)右鍵的回調(diào)函數(shù)

在標(biāo)簽上加上 @contextmenu=“contextmenu” 即可

<div @contextmenu="contextmenu" class="contextmenu"></div>

顯示我們定義的菜單

去掉瀏覽器默認(rèn)的菜單

  • 通過(guò) preventDefault api
e.preventDefault();   //默認(rèn)觸發(fā)事件的行為被 preventDefault() 取消了
  • 定義一個(gè)菜單頁(yè)面
  <div class="fixed-box" :style="fixedBoxStyleObject" v-show="isShowMenu" >
    <span>刪除聊天</span>
  </div>

這個(gè)頁(yè)面綁定isShowMenu變量用來(lái)顯示或不顯示菜單,通過(guò)fixedBoxStyleObject變量來(lái)設(shè)置菜單的位置

  • 定義觸發(fā)的回調(diào)函數(shù)
const contextmenu = (e) => {
  e.preventDefault();   //默認(rèn)觸發(fā)事件的行為被 preventDefault() 取消了
  fixedBoxStyleObject.left = e.clientX + 'px'
  fixedBoxStyleObject.top = e.clientY + 'px'
  isShowMenu.value = true
}

點(diǎn)擊其他地方菜單消失

一般我們用設(shè)置焦點(diǎn)和失去焦點(diǎn)觸發(fā)事件來(lái)完成這個(gè)功能,例如:

在右鍵時(shí)設(shè)置焦點(diǎn),那么當(dāng)點(diǎn)擊其他地方時(shí)就會(huì)觸發(fā)失去焦點(diǎn)事件,在調(diào)用回調(diào)函數(shù)即可

  • 優(yōu)化template部分
  <div tabindex="-1" class="fixed-box" :style="fixedBoxStyleObject" v-show="isShowMenu" @blur="isShowMenu = false" ref="fixedBoxRef">
    <span>刪除聊天</span>
  </div>
  • 優(yōu)化scipt部分
const contextmenu = (e) => {
  e.preventDefault();   //默認(rèn)觸發(fā)事件的行為被 preventDefault() 取消了
  fixedBoxStyleObject.left = e.clientX + 'px'
  fixedBoxStyleObject.top = e.clientY + 'px'
  isShowMenu.value = true
  setTimeout(() => {
      fixedBoxRef.value.focus()
  },1)
}

tips:

  • 由于div本身不能獲取焦點(diǎn),但設(shè)置tabindex后便可以獲取焦點(diǎn)
  • 設(shè)定一個(gè)定時(shí)器的原因是dom從不顯示到顯示需要時(shí)間,必須得顯示后才能獲取焦點(diǎn)

css部分

.fixed-box{
  position: fixed;
  color: black;
  padding: 8px;
  width: fit-content;
  background-color: #F8F8F8;
}
.contextmenu{
	width:300px;
	height:300px;
  margin: 100px auto;
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

滦南县| 玛纳斯县| 乌什县| 鄂尔多斯市| 加查县| 铁力市| 华坪县| 云林县| 广南县| 措美县| 边坝县| 塔河县| 凌源市| 寻甸| 鄢陵县| 乌什县| 米脂县| 墨江| 广德县| 夏津县| 阿拉善右旗| 开化县| 舞钢市| 嘉兴市| 焉耆| 朝阳区| 东丰县| 苗栗县| 奇台县| 遂川县| 霍林郭勒市| 天祝| 侯马市| 土默特右旗| 铅山县| 三明市| 东台市| 沁水县| 洮南市| 绿春县| 瓦房店市|