天天看点

JavaScript 自定义html元素鼠标右键菜单

自定义html元素鼠标右键菜单

实现思路

在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值

编码实现

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<script>

    window.onload = function(){

    var menu = document.getElementById('menu');

    document.body.oncontextmenu = function(e){ // 自定义body元素的鼠标事件处理函数

        var e = e || window.event;

        e.preventDefault();  //阻止系统右键菜单 IE8-不支持

        // 显示自定义的菜单调整位置

        let scrollTop =

                document.documentElement.scrollTop || document.body.scrollTop;// 获取垂直滚动条位置

        let scrollLeft =

                document.documentElement.scrollLeft || document.body.scrollLeft;// 获取水平滚动条位置

        menu.style.display = 'block';

        menu.style.left = e.clientX + scrollLeft + 'px';

        menu.style.top = e.clientY  + scrollTop + 'px';

    }

    // 鼠标点击其他位置时隐藏菜单

    document.onclick = function(){

        menu.style.display = 'none';

}

</script>

<style>

    *{

        margin: 0;

        padding: 0;

    p{

        margin-top: 200px; 

    ul li{

        list-style-type: none;

        margin: 10px 0;

        text-align: center;

    #menu{

        border:1px solid #ccc;

        background: #eee;

    position: absolute; // 设置菜单为绝对位置

        width: 100px;

        height: 120px;

        display: none;

</style>

</head>

<body style="overflow:auto">

    <div id="box" style="height:5000px; width:5000px">让body元素出现滚动条用的div</div>

    <div id="menu">

        <ul>

            <li><a href="#">分享</a></li>

            <li><a href="#">收藏</a></li>

            <li><a href="#">举报</a></li>

        </ul>

    </div>

</body>

</html>

实现效果

JavaScript 自定义html元素鼠标右键菜单

作者:授客

QQ:1033553122

全国软件测试QQ交流群:7156436

Git地址:https://gitee.com/ishouke

友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!

作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!

           微信打赏                       

支付宝打赏                  全国软件测试交流QQ群  

JavaScript 自定义html元素鼠标右键菜单
JavaScript 自定义html元素鼠标右键菜单
JavaScript 自定义html元素鼠标右键菜单

继续阅读