随鼠标移动的提示框
原生代码html demo代码案例
https://blog.csdn.net/wang_swa99er/article/details/120157802
思路:
1、准备一个浮动定位的弹窗
2、页面执行时对目标盒子做onmouseover, onmouseout,onmousemove监听
3、鼠标移动到目标盒子上,设置弹窗的top left
html
<div
id="riskTypeColumnar"
>
<div
v-for="(item,index) in riskList"
:key="index"
class="riskItem"
>
内容
</div>
<div id="tanchuang">
<div class="title">
{{ riskDetail.title }}
</div>
</div>
</div>
js
const riskDetail = ref<any>({
title: '网络风险',
supplierRisk: 10,
enterpriseRisk: 20,
})
riskList.value = [
{
title: '网络风险',
supplierRisk: 10,
enterpriseRisk: 20,
total: 30,
},
{
title: 'APP风险',
supplierRisk: 10,
enterpriseRisk: 20,
total: 30,
},
{
title: '应用风险',
supplierRisk: 10,
enterpriseRisk: 20,
total: 30,
},
{
title: '数据泄露',
supplierRisk: 10,
enterpriseRisk: 20,
total: 30,
},
{
title: '攻击威胁',
supplierRisk: 10,
enterpriseRisk: 20,
total: 30,
},
]
onMounted(async () => {
await getTableData()
const riskItems = document.getElementsByClassName('riskItem');
const propver = document.getElementById('tanchuang');
for (let i = 0; i < riskItems.length; i++) {
// oAs[i].index = i;
(riskItems[i] as HTMLElement).onmouseover = () => {
// (propver as HTMLElement).innerHTML = 'qq';
riskDetail.value = riskList.value[i]; // 选中的div正好也是数组上的索引值,所以刚好对上
(propver as HTMLElement).style.display = 'block';
}
(riskItems[i] as HTMLElement).onmouseout = () => {
(propver as HTMLElement).style.display = 'none';
}
// 让提示框总是悬停在鼠标的右下角
(riskItems[i] as HTMLElement).onmousemove = (ev:any) => {
const e = ev || window.event;
(propver as HTMLElement).style.left = `${e.clientX + 10}px`;
(propver as HTMLElement).style.top = `${e.clientY + 10}px`;
}
}
})