vue实现右键菜单栏

 更新时间:2022年04月10日 07:50:04   作者:-=|=-  
这篇文章主要为大家详细介绍了vue实现右键菜单栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue实现右键菜单栏的具体代码,供大家参考,具体内容如下

vue实现右键菜单栏和原生js大同小异,都是需要明白两个点

1.contextmenu事件是鼠标的右键点击事件
2.要阻止浏览器的默认右键事件

代码如下

// methods
rightShow() {
    let menu = this.$refs.msgRightMenu
    this.isPersoncontextMenus = true
    var evt = event || window.event;
        var clientWidth = document.documentElement.clientWidth || document.body.clientWidth ;
        var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
    
        var clientHeight = document.documentElement.clientHeight || document.body.clientHeight ;
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop ;
    
        //给left和top分别赋值为鼠标的位置;
        menu.style.left = evt.pageX+"px";
        menu.style.top = evt.pageY+"px";
        //如果鼠标右边放不下菜单,就把left的值的改了
        if(evt.pageX+100>clientWidth+scrollLeft){//菜单应该在鼠标左边;
            var left1 = evt.pageX-100;
            menu.style.left = left1+"px";
        }
        //如果鼠标下边放不下菜单,就把top的值的改了
        if(evt.pageY+100>clientHeight+scrollTop){
            var top1 = (evt.pageY-100);
            menu.style.top = top1+"px";
        }
    
        menu.style.display = "block";
},
showNo(){
    let menu = this.$refs.msgRightMenu
    menu.style.display = "none";
}
//css样式直供参考,根据自己的需要写样式
#menu{
    list-style: none;
    margin: 0px;
    padding: 0px;
    position: absolute;
    display: none;
    width: 100px;
    height: 100px;
    background-color: gray;
}

#menu li{
    margin: 0px;
    padding: 0px;
}
//html
<div @click.self="showNo">//这个是最外层的盒子,加self修饰符可以不与其他事件冲突
        <input type="text" @contextmenu.prevent="rightShow">    //这里的prevent修饰符可以直接阻止浏览器的默认行为
            <ul id="menu" ref="msgRightMenu" v-show="isPersoncontextMenus">//isPersoncontextMenus别忘了在data里定义这个变量
                <li>鱼香肉丝</li>
                <li>醋溜土豆丝</li>
                <li>麻辣小龙虾</li>
                <li>回锅肉</li>
            </ul>
</div>

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue+vuex+axios实现登录、注册页权限拦截

    vue+vuex+axios实现登录、注册页权限拦截

    下面小编就为大家分享一篇vue+vuex+axios实现登录、注册页权限拦截,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue 实现v-for循环的时候更改 class的样式名称

    Vue 实现v-for循环的时候更改 class的样式名称

    这篇文章主要介绍了Vue 实现v-for循环的时候更改 class的样式名称,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue Router 配合 keep-alive 不生效的问题及解决方案

    Vue Router 配合 keep-alive 不生效的问题及解决方案

    我在 app.vue 中使用了 router-view 标签,来展示 layout 和其他一级路由,然后在 layout 下的 main 区域使用了一个 router-view 来展示通过菜单栏切换的子路由,下面给大家介绍Vue Router 配合 keep-alive 不生效的问题及解决方案,感兴趣的朋友一起看看吧
    2024-01-01
  • 基于Vant UI框架实现时间段选择器

    基于Vant UI框架实现时间段选择器

    这篇文章主要为大家详细介绍了基于Vant UI框架实现时间段选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • vue+echarts定时重新绘制以达到刷新的动效问题

    vue+echarts定时重新绘制以达到刷新的动效问题

    这篇文章主要介绍了vue+echarts定时重新绘制以达到刷新的动效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vant的Uploader 文件上传,图片数据回显问题

    vant的Uploader 文件上传,图片数据回显问题

    这篇文章主要介绍了vant的Uploader 文件上传,图片数据回显问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue中el-cascader三级联动懒加载回显问题解决

    vue中el-cascader三级联动懒加载回显问题解决

    本文主要介绍了vue中el-cascader三级联动懒加载回显问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • vue-loader中引入模板预处理器的实现

    vue-loader中引入模板预处理器的实现

    这篇文章主要介绍了vue-loader中引入模板预处理器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用vue实现HTML页面生成图片的方法

    使用vue实现HTML页面生成图片的方法

    这篇文章主要介绍了使用vue实现HTML页面生成图片的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • vue如何获取光标位置

    vue如何获取光标位置

    这篇文章主要介绍了vue获取光标位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论