vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過顯示懸浮框效果
本文實(shí)例為大家分享了vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過顯示懸浮框效果的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目架構(gòu)采用vue-cli腳手架搭建的webpack項(xiàng)目
實(shí)現(xiàn)的效果如下:

鼠標(biāo)經(jīng)過button 右邊顯示出一個(gè)懸浮框 鼠標(biāo)移出buttom元素 懸浮框隱藏 并且懸浮框可以隨著鼠標(biāo)的移動(dòng)而改變位置
全部代碼如下:
<template>
? <div class="hello">
? ? <div id="focus_toolTip" class="special_focus_toolTip" v-html="toolTopbody"></div>
? ? <button
? ? ? class="buttonStyle"
? ? ? @mousemove="itemMousemove($event)"
? ? ? @mouseover="itemMouseover"
? ? ? @mouseout="itemMouseout"
? ? >懸浮框測(cè)試</button>
? </div>
</template>
<script>
import $ from "jquery";
export default {
? name: "HelloWorld",
? data() {
? ? return {
? ? ? toolTopbody: ""
? ? };
? },
? methods: {
? ? itemMouseover: function() {
? ? ? var focusTooltip = $("#focus_toolTip");
? ? ? focusTooltip.css("display", "block");
? ? },
? ? itemMouseout: function() {
? ? ? var focusTooltip = $("#focus_toolTip");
? ? ? focusTooltip.css("display", "none");
? ? },
? ? itemMousemove: function(e) {
? ? ? var self = this;
? ? ? var focusTooltip = $("#focus_toolTip");
? ? ? focusTooltip.css("top", e.clientY - 80 + "px");
? ? ? focusTooltip.css("left", e.clientX + 100 + "px");
? ? ? var headerHtml =
? ? ? ? "<div style='font-size:12px;color: #fec443;font-weight: bold;font-family: MicrosoftYaHei;'>" +
? ? ? ? "我的懸浮框參考:" +
? ? ? ? "</div>";
? ? ? var effectHtml =
? ? ? ? "<div style='font-size:12px;margin-top:5px;'>" + "</div>";
? ? ? self.toolTopbody = headerHtml + effectHtml;
? ? }
? }
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.buttonStyle {
? margin-left: 150px;
}
.special_focus_toolTip {
? z-index: 7;
? position: absolute;
? display: none;
? width: 400px;
? height: 130px;
? border-style: solid;
? transition: left 0.4s cubic-bezier(0.23, 1, 0.32, 1),
? ? top 0.4s cubic-bezier(0.23, 1, 0.32, 1);
? background-color: rgba(50, 50, 50, 0.701961);
? border-width: 0px;
? border-color: #333333;
? border-radius: 4px;
? color: #ffffff;
? font-style: normal;
? font-variant: normal;
? font-weight: normal;
? font-stretch: normal;
? font-size: 14px;
? font-family: "Microsoft YaHei";
? line-height: 21px;
? padding: 10px 10px;
}
</style>主要實(shí)現(xiàn)思路:
首先展示的懸浮框是絕對(duì)定位并且一開始是隱藏的display:none,觸發(fā) mouseover事情的時(shí)候把元素展示出來focusTooltip.css(“display”, “block”); 觸發(fā)itemMouseout事件的時(shí)候把它隱藏掉focusTooltip.css(“display”, “none”); 然后當(dāng)鼠標(biāo)指針在指定的元素中移動(dòng)時(shí),就會(huì)發(fā)生 mousemove 事件, 這個(gè)時(shí)候通過Event 對(duì)象拿到鼠標(biāo)的位置(備注:Event 對(duì)象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)、鼠標(biāo)的位置、鼠標(biāo)按鈕的狀態(tài)),然后稍微調(diào)整下位置,最后給懸浮框的div元素設(shè)置top 和left屬性, 其實(shí)懸浮框是基于html定位的 他的父元素沒有相對(duì)定位position: relative; 不然會(huì)影響到top和left的屬性,因?yàn)閍bsolute會(huì)基于父元素relative進(jìn)行定位。 鼠標(biāo)事件整體觸發(fā)的順序?yàn)閙ouseover->mousemove->mouseout 最后懸浮框里面的內(nèi)容會(huì)根據(jù)v-html對(duì)應(yīng)的內(nèi)容渲染(這塊展示的內(nèi)容由自己定義)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于vue中對(duì)鼠標(biāo)劃過事件的處理方式詳解
- vue+mousemove實(shí)現(xiàn)鼠標(biāo)拖動(dòng)功能(拖動(dòng)過快失效問題解決方法)
- vue鼠標(biāo)懸停事件實(shí)例詳解
- vue實(shí)現(xiàn)組件跟隨鼠標(biāo)位置彈出效果(示例代碼)
- vue自定義指令添加跟隨鼠標(biāo)光標(biāo)提示框v-tooltip方式
- 如何利用 vue實(shí)現(xiàn)鼠標(biāo)懸停時(shí)顯示元素或文本
- Vue中常用的鼠標(biāo)移入移出事件詳解
- 利用Vue3實(shí)現(xiàn)鼠標(biāo)跟隨效果
- 使用Vue3實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)跟隨效果
- vue3實(shí)現(xiàn)鼠標(biāo)跟隨傾斜動(dòng)態(tài)效果實(shí)例
相關(guān)文章
vue使用Proxy實(shí)現(xiàn)雙向綁定的方法示例
這篇文章主要介紹了vue使用Proxy實(shí)現(xiàn)雙向綁定的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03
vue仿淘寶滑動(dòng)驗(yàn)證碼功能(樣式模仿)
淘寶大家都使用過,淘寶滑動(dòng)驗(yàn)證碼的目的是為了驗(yàn)證到底是人還是機(jī)器,今天小編給大家分享的是模仿淘寶滑動(dòng)驗(yàn)證碼的樣式,感興趣的朋友跟隨小編一起看看吧2019-12-12
vue項(xiàng)目中封裝echarts的優(yōu)雅方式分享
在實(shí)際項(xiàng)目開發(fā)中,我們會(huì)經(jīng)常與圖表打交道,比如?訂單數(shù)量表、商品銷量表、會(huì)員數(shù)量表等等,它可能是以折線圖、柱狀圖、餅狀圖等等的方式來展現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中封裝echarts的優(yōu)雅方式的相關(guān)資料,需要的朋友可以參考下2022-03-03
Vue頁(yè)面渲染中key的應(yīng)用實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Vue頁(yè)面渲染中key的應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
基于Vue3+Node.js實(shí)現(xiàn)實(shí)時(shí)可視化監(jiān)控系統(tǒng)
在日常運(yùn)維和開發(fā)工作中,服務(wù)器監(jiān)控是必不可少的環(huán)節(jié),市面上有不少優(yōu)秀的監(jiān)控方案,但對(duì)于中小型團(tuán)隊(duì)或個(gè)人開發(fā)者來說,這些工具往往過于復(fù)雜,學(xué)習(xí)成本較高,本文將介紹我自己開發(fā)的 ServWatch 監(jiān)控系統(tǒng)——一個(gè)輕量級(jí)、易部署、界面美觀的實(shí)時(shí)監(jiān)控解決方案2026-02-02
Vue中@click.stop與@click.prevent解讀
Vue中,`@click.stop`用于阻止事件冒泡,而`@click.prevent`用于阻止事件的默認(rèn)行為,這兩個(gè)方法在處理事件時(shí)非常有用2025-02-02

