Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果的示例代碼
需求
在所做的Vue項(xiàng)目中,需要在鼠標(biāo)移動(dòng)文字框的時(shí)候顯示一些詳細(xì)信息。最終實(shí)現(xiàn)的效果如下:

鼠標(biāo)經(jīng)過(guò)button的時(shí)候,可以在光標(biāo)附近顯示出一個(gè)懸浮框,顯示框里面顯示時(shí)間和值的信息,鼠標(biāo)移出button元素的時(shí)候,這個(gè)顯示框會(huì)消失。
分析
涉及到鼠標(biāo)的移動(dòng)事件。
鼠標(biāo)事件有下面這幾種:
1、onclick(鼠標(biāo)點(diǎn)擊事件)
box.onclick = function(e){
console.log(e)
}
2、onmousedown(鼠標(biāo)按下事件)
box.onmousedown = function(e){
console.log(e)
}
3、onmouseup(鼠標(biāo)松開(kāi)事件)
box.onmouseup = function(e){
console.log(e)
}
4、onmousemove(鼠標(biāo)移動(dòng)事件)
box.onmousemove = function(e){
console.log(e)
}
5、onmouseout(鼠標(biāo)劃出事件)
box.onmouseout = function(e){
console.log(e)
}
由鼠標(biāo)的MouseEvent需要了解幾個(gè)坐標(biāo):
一、clientX、clientY 點(diǎn)擊位置距離當(dāng)前body可視區(qū)域的x,y坐標(biāo)
二、pageX、pageY 對(duì)于整個(gè)頁(yè)面來(lái)說(shuō),包括了被卷去的body部分的長(zhǎng)度
三、screenX、screenY 點(diǎn)擊位置距離當(dāng)前電腦屏幕的x,y坐標(biāo)
四、offsetX、offsetY 相對(duì)于帶有定位的父盒子的x,y坐標(biāo)
五、x、y 和screenX、screenY一樣

實(shí)現(xiàn)
我實(shí)現(xiàn)的思路是寫(xiě)了一個(gè)默認(rèn)的空div,用來(lái)展示懸浮框信息。展示的懸浮框是絕對(duì)定位,一開(kāi)始是隱藏的,當(dāng)觸發(fā)mouseover事件的時(shí)候,把display變?yōu)閎lock塊級(jí)元素,然后獲取的event事件,
<div id="mouse" v-if="true" class="version_total">
</div>
.version_total{
position: absolute;
width: 10%;
height: 5%;
}
然后真正的div上面寫(xiě)個(gè)mousemove 綁定一個(gè)方法傳遞參數(shù)和event事件:在這個(gè)方法里面更改樣式,最后用innerHtml來(lái)展現(xiàn)出來(lái),需要給懸浮框的div元素設(shè)置top和left屬性,具體的代碼如下:
detailInfo(e,data){
var showDiv = document.getElementById('mouse')
showDiv.style='background-color:#8c8c8c;border:1px solid black'
showDiv.style.height='58px'
showDiv.style.textAlign='left'
showDiv.style.left = (event.pageX-300) + 'px'
showDiv.style.top = (event.pageY-120) + 'px'
showDiv.style.display = 'block'
let time=data.time;
let keyValue=data.value;
var html ="<p>"+"時(shí)間:"+time+"</p>";
var html2 ="<p>"+"值:"+keyValue+"</p>";
showDiv.innerHTML = html+html2
},
leave($event){
var showDiv = document.getElementById('mouse')
showDiv.style.display = 'none'
showDiv.innerHTML = ''
}
到此這篇關(guān)于Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果的示例代碼的文章就介紹到這了,更多相關(guān)Vue 鼠標(biāo)懸浮框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
uniapp實(shí)現(xiàn)webview頁(yè)面關(guān)閉功能的代碼示例
uniapp用web-view打開(kāi)一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中點(diǎn)擊跳轉(zhuǎn)到下一層級(jí)的網(wǎng)頁(yè),一層層深入,點(diǎn)擊返回鍵或者頁(yè)面上方返回按鈕只能一層層往回退,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)webview頁(yè)面關(guān)閉功能的相關(guān)資料,需要的朋友可以參考下2024-03-03
vue?模板循環(huán)繪制多行上傳文件功能實(shí)現(xiàn)
這篇文章主要為大家介紹了vue?模板循環(huán)繪制多行上傳文件功能實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
vue-router的HTML5 History 模式設(shè)置
這篇文章主要介紹了vue-router的HTML5 History模式設(shè)置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
VUE設(shè)置和清除定時(shí)器的方式及遇到的問(wèn)題
?最近需要再頁(yè)面里做個(gè)倒計(jì)時(shí),發(fā)現(xiàn)用clearInterval()清除定時(shí)器失效,下面這篇文章主要給大家介紹了關(guān)于VUE設(shè)置和清除定時(shí)器的方式及遇到的問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-10-10

