1 changed files with 113 additions and 0 deletions
@ -0,0 +1,113 @@ |
|||
<!-- 菜单页代码 contextButton/index.vue --> |
|||
<template> |
|||
<div id="contextmenu" class="contextmenu"> |
|||
<div class="contextmenu__item" @click="handleOne()">菜单一</div> |
|||
<div class="contextmenu__item" @click="handleTwo()">菜单二</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单三</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单4</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单5</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单6</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单7</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单8</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单9</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单10</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单11</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单12</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
<div class="contextmenu__item" @click="handleThree()">菜单13</div> |
|||
|
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "index", |
|||
data() { |
|||
return {} |
|||
}, |
|||
methods: { |
|||
init(row, column, event) { |
|||
// 设置菜单出现的位置 |
|||
// 具体显示位置根据自己需求进行调节 |
|||
let menu = document.querySelector('#contextmenu') |
|||
let height = 24 * 24 // 右键菜单 高度 |
|||
if (height > (window.innerHeight - 180)) { |
|||
height = window.innerHeight - 200 |
|||
} |
|||
menu.style.height = height + "px" |
|||
let topcha = document.body.clientHeight - height // 菜单页面高度差 |
|||
let cha = document.body.clientHeight - event.clientY // 鼠标位置差 |
|||
console.log(document.body.clientHeight, event.clientY, cha, topcha, height) |
|||
// 防止菜单太靠底,根据可视高度调整菜单出现位置 |
|||
if (cha < height) { |
|||
menu.style.top = document.body.clientHeight - (height+80) + 'px' |
|||
} else { |
|||
menu.style.top = event.clientY - 80 + 'px' |
|||
} |
|||
|
|||
menu.style.left = event.clientX + -200 + 'px' |
|||
document.addEventListener('click', this.foo) // 给整个document添加监听鼠标事件,点击任何位置执行foo方法 |
|||
|
|||
}, |
|||
foo() { |
|||
this.$emit('foo') |
|||
}, |
|||
handleOne() { |
|||
this.$emit('handleOne') |
|||
}, |
|||
handleTwo() { |
|||
this.$emit('handleTwo') |
|||
}, |
|||
handleThree() { |
|||
this.$emit('handleThree') |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.contextmenu__item { |
|||
display: block; |
|||
line-height: 24px; |
|||
text-align: center; |
|||
} |
|||
|
|||
.contextmenu__item:not(:last-child) { |
|||
border-bottom: 1px solid rgba(64, 158, 255, .2); |
|||
} |
|||
|
|||
.contextmenu { |
|||
overflow: auto; |
|||
position: absolute; |
|||
background-color: #fff; |
|||
width: 100px; |
|||
/*height: 106px;*/ |
|||
font-size: 12px; |
|||
color: #17B3A3;; |
|||
border-radius: 4px; |
|||
-webkit-box-sizing: border-box; |
|||
box-sizing: border-box; |
|||
border: 1px solid rgba(64, 158, 255, .2); |
|||
white-space: nowrap; |
|||
z-index: 2100; |
|||
} |
|||
|
|||
.contextmenu__item:hover { |
|||
cursor: pointer; |
|||
background: #17B3A3;; |
|||
border-color: #17B3A3;; |
|||
color: #fff; |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue