js自定义右键菜单

  1. 利用监听window对象的oncontextmenu事件来实现自定义的菜单

  2. 首先将菜单隐藏起来,当捕获到右键事件时,将菜单移动到合适位置再显示出来

样式

<style>
    * {
        margin: 0;
        padding: 0;
    }

    .menu {
        background-color:white;
        width: 100px;
        border: 1px solid #ccc;
        position: absolute;
        box-shadow: 2px 2px 8px 1px rgba(0, 0, 0, .2);
        display: none;
    }

        .menu li {
            list-style: none;
            width: 100%;
        }

            .menu li span {
                display: inline-block;
                text-decoration: none;
                color: #555;
                width: 100%;
                padding: 10px 0;
                text-align: center;
                cursor: pointer;
            }

            .menu li:first-of-type {
                border-radius: 5px 5px 0 0;
            }

            .menu li span:hover {
                background: #eee;
                color: #CC1A1A;
            }
</style>

页面

<body style="background-color:green">
    <ul class="menu" id="menu">
        <li><span>复制</span></li>
        <li><span>粘贴</span></li>
        <li><span>刷新</span></li>
        <li><span>其他功能1</span></li>
        <li><span>其他功能2</span></li>
    </ul>
    <h1 style="margin:10% 40%">右键菜单</h1>
</body>

需要引入js

<script src="~/jquery-3.3.1.min.js"></script>

js部分

<script>
   //点击鼠标右键响应函数
    window.oncontextmenu = function (e) {
    
     //对右键菜单进行定位
        if (e.clientX + 100 <= innerWidth) {
            var x = e.clientX;
        }
        else {
            var x = e.clientX - 98;
        }
        if (e.clientY + 140 <= innerHeight) {
            var y = e.clientY;
        }
        else {
            var y = e.clientY - 138;
        }
        console.log($("#menu"))

        $("#menu")[0].style.left = x + 'px';
        $("#menu")[0].style.top = y + 'px';
        $("#menu")[0].style.display = 'block';
        //取消默认的浏览器自带右键
        e.preventDefault();

    }
    //点击选择关闭menu
    document.getElementById('menu').onclick = function () {
        document.getElementById('menu').style.display = 'none';
    }
    //左击界面其他地方关闭menu
    window.onclick = function () {
        document.getElementById('menu').style.display = 'none';
    }

</script>

最终结果

显示图片

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值