我们有时候在开发过程中会有自定义右键菜单,替换掉浏览器默认右键菜单的想法,那么如何实现呢?话不多说,上代码:

Html代码:

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自定义鼠标右键菜单效果 - 梁先生哎</title>
    <link rel="shortcut icon" href="https://llyth.cn/img/favicon.ico" type="image/x-icon">
    <link rel="stylesheet" href="index.css">
</head>

<body>
    <div class="action_area" id="action_area">触发区域</div>

    <ul id="custom_menu">
        <li onclick="javascript:location.reload();">刷新</li>
        <li onclick="javascript:location.reload();">刷新</li>
        <li onclick="javascript:location.reload();">刷新</li>
        <li onclick="javascript:location.reload();">刷新</li>
    </ul>

    <script src="index.js"></script>
</body>

</html>
HTML

CSS代码:

* {
    margin: 0;
    padding: 0;
}

.action_area {
    width: 80%;
    height: 300px;
    margin: 0 auto;
    border: 1px solid black;
    margin-top: 200px;
    font-size: 8em;
    text-align: center;
    line-height: 300px;
}

#custom_menu {
    list-style: none;
    width: 150px;
    border: 1px solid #ccc;
    border-bottom: none;
    background-color: #fff;
    position: absolute;
    display: none;
}

#custom_menu li {
    border-bottom: 1px solid #ccc;
    padding: 5px 10px;
    cursor: pointer;
}

#custom_menu li:hover {
    background-color: #ccc;
}
CSS

JavaScript代码:

var custom_menu = document.getElementById("custom_menu");
var action_area = document.getElementById("action_area");
action_area.addEventListener("contextmenu", function (event) {
    event.preventDefault();
    custom_menu.style.display = "block";
    //获取鼠标视口位置
    custom_menu.style.top = event.clientY + "px";
    custom_menu.style.left = event.clientX + "px";
});

document.addEventListener("click", function(event){
    custom_menu.style.display = "none";
});
JavaScript

文件目录结构如图:

效果:

如图,此时右键操作在触发区域触发,显示自定义的右键菜单
如图,此时右键操作在触发区域外触发,显示浏览器默认的右键菜单

也可以对右键菜单添加一些小logo、动画等以优化交互体验。

说点什么
你是我一生只会遇见一次的惊喜...
  • OωO
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ°ο°)ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ"(´っω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • (。•ˇ‸ˇ•。)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...