如何利用 vue实现鼠标悬停时显示元素或文本

yizhihongxing

实现鼠标悬停时显示元素或文本的功能,可以使用 Vue 组件中的 v-on: 指令和 v-bind: 指令。具体步骤如下:

1. 为需要绑定悬停事件的元素添加绑定

在 Vue 模板中,我们可以为需要绑定悬停事件的元素添加 v-on: 指令,以监听鼠标悬停事件。通常情况下,我们将 v-on: 指令绑定 mouseover 事件。例如:

<template>
  <div>
    <p v-on:mouseover="showText">鼠标悬停时显示此处文本</p>
  </div>
</template>

如果我们需要动态绑定元素的属性样式,如 display 属性,可以使用 v-bind: 指令,例如:

<template>
  <div>
    <p v-on:mouseover="showText" v-bind:style="{ display: isShow ? 'block' : 'none' }">
      鼠标悬停时显示此处文本
    </p>
  </div>
</template>

在该例中,我们绑定了 style 属性,根据数据属性 isShow 的值动态更新元素的显示与隐藏。

2. 实现悬停时显示文本的方法

针对上面的代码,我们需要实现 showText 方法来控制文本的显示与隐藏。该方法通常可以定义在 Vue 实例的 methods 属性中,例如:

<template>
  <div>
    <p v-on:mouseover="showText" v-bind:style="{ display: isShow ? 'block' : 'none' }">
      鼠标悬停时显示此处文本
    </p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isShow: false,
    }
  },
  methods: {
    showText() {
      this.isShow = true
    }
  }
}
</script>

可以看到,在 showText 方法中我们将数据属性 isShow 的值更新为 true,以控制文本的显示与隐藏。当鼠标移开时,文本会隐藏起来。

示例1 - 实现图片悬停时显示标题

下面我们以一个具体的示例来展示如何实现图片悬停时显示标题的功能。具体步骤如下:

<template>
  <div>
    <div v-for="img in imgList" :key="img.id" class="img-wrap">
      <img v-bind:src="img.src" v-on:mouseover="showTitle(img.id)" v-on:mouseout="hideTitle(img.id)" />
      <div class="title-wrap" v-bind:class="{ active: activeId === img.id }">
        <h3>{{ img.title }}</h3>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      imgList: [
        { id: 1, src: 'https://picsum.photos/200/300/?random=1', title: '美丽的风景' },
        { id: 2, src: 'https://picsum.photos/200/300/?random=2', title: '可爱的小猫' },
        { id: 3, src: 'https://picsum.photos/200/300/?random=3', title: '喜欢的花朵' },
      ],
      activeId: null,
    }
  },
  methods: {
    showTitle(id) {
      this.activeId = id
    },
    hideTitle(id) {
      this.activeId = null
    },
  },
}
</script>

该示例中,我们使用 v-for 指令循环渲染图片列表,为每个图片绑定 mouseovermouseout 事件。同时,我们使用 v-bind: 指令和计算属性 activeId 控制标题的显示与隐藏。当鼠标移入某个图片时,对应的标题会显示;当鼠标移开时,标题就会自动隐藏。

示例2 - 实现气泡提示悬停时显示

下面我们再来看看如何实现气泡提示的悬停时显示。具体步骤如下:

<template>
  <div>
    <div v-for="(item, index) in list" :key="index" class="tooltip-wrap" v-on:mouseover="showTooltip($event, item)" v-on:mouseout="hideTooltip($event)">
      <span>{{ item.text }}</span>
      <div class="tooltip" v-bind:class="{ active: item.show }">{{ item.tooltip }}</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { text: '图标1', tooltip: '这是图标1的提示信息', show: false },
        { text: '图标2', tooltip: '这是图标2的提示信息', show: false },
        { text: '图标3', tooltip: '这是图标3的提示信息', show: false },
      ],
    }
  },
  methods: {
    showTooltip(event, item) {
      item.show = true
      const tooltipEl = event.target.nextSibling
      const targetRect = event.target.getBoundingClientRect()
      tooltipEl.style.left = targetRect.left + 'px'
      tooltipEl.style.top = targetRect.top - 40 + 'px'
    },
    hideTooltip(event) {
      const tooltipEl = event.target.nextSibling
      tooltipEl.style.left = '-9999px'
      tooltipEl.style.top = '-9999px'
      setTimeout(() => {
        event.target.nextSibling.style.opacity = 0
      }, 200)
      setTimeout(() => {
        event.target.nextSibling.style.display = 'none'
      }, 400)
    },
  },
}
</script>

在该示例中,我们使用 v-for 指令循环渲染气泡提示列表,为每个元素绑定 mouseovermouseout 事件。我们通过控制 item.show 的值来控制气泡提示的显示与隐藏。同时,我们使用 event.target 和计算属性控制气泡提示的位置和样式。

以上就是利用 Vue 实现鼠标悬停时显示元素或文本的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何利用 vue实现鼠标悬停时显示元素或文本 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue 3自定义指令开发的相关总结

    Vue 3自定义指令开发的相关总结 Vue 3自定义指令是Vue.js提供的一种扩展语法,可以用于对普通HTML标签的属性进行自定义绑定和操作。Vue 3的自定义指令与Vue 2的自定义指令相比,有较大的变化,需要开发者重新学习和掌握。 Vue 3自定义指令的基本语法 Vue 3中定义自定义指令的方式如下: const directive = { // di…

    Vue 2023年5月27日
    00
  • vue实现excel表格的导入导出的示例

    当我们需要在前端实现excel表格的导入导出操作时,可以使用vue库提供的一些插件,轻松达到这个目标。接下来,我将详细讲解vue实现excel表格导入导出的完整攻略。 1. 安装依赖 在进行excel表格导入导出操作时,我们需要安装以下几个依赖: npm install xlsx npm install file-saver npm install scri…

    Vue 2023年5月27日
    00
  • 通过vue手动封装on、emit、off的代码详解

    下面就是“通过Vue手动封装on、emit、off的代码详解”的攻略。 什么是on、emit、off on、emit、off是Vue中的三个方法。其中,on用于监听自定义事件的回调函数,emit用于触发子组件中自定义事件,off用于移除事件监听器。 封装on、emit、off 在Vue框架中,我们不需要手动封装on、emit、off,可以直接在组件中使用这三…

    Vue 2023年5月27日
    00
  • mpvue 如何使用腾讯视频插件的方法

    为了使用腾讯视频插件,应该先安装该插件。在命令行里输入以下命令进行安装: npm install wechat-miniprogram-video –save 安装完成后,根据以下步骤使用mpvue和腾讯视频插件: 1.在 Vue 实例中的生命周期created中使用如下代码引入腾讯视频插件及样式: import ‘wechat-miniprogram-v…

    Vue 2023年5月28日
    00
  • 深入理解Vue 的钩子函数

    Vue 的钩子函数是 Vue 实例在特定时期执行的函数。这些函数提供了扩展 Vue 行为的机会,例如在实例创建前和销毁后执行某个操作,或者在数据更新时执行一些代码。 Vue 的钩子函数分为两种:生命周期钩子函数和自定义钩子函数。 生命周期钩子函数 Vue 实例的生命周期从创建到销毁一共有 8 个时期,每个时期都有对应的生命周期钩子函数。下面逐一介绍并举例说明…

    Vue 2023年5月27日
    00
  • vue中watch的用法汇总

    Vue 中 Watch 的用法汇总 1. Watch 简介 在Vue中,Watch是用于响应和监听数据变化的一个重要特性。通过watch可以检测数据的变化,并且可以在数据变化时做相应的操作,例如更新dom元素、请求接口等。 2. Watch 的使用 2.1 Watch 的基本语法 在 Vue 中添加 Watch 通过在数据对象中定义一个 watch 属性,然…

    Vue 2023年5月27日
    00
  • vue中使用vant的Toast轻提示报错的解决

    下面是针对“vue中使用vant的Toast轻提示报错的解决”的完整攻略。 问题描述 在Vue中使用Vant库中的Toast轻提示,出现了如下报错信息: TypeError: _this.$toast is not a function 问题原因 该错误的原因是缺少Toast组件的引入。在代码中我们尝试调用this.$toast,但由于没有引入对应的组件,所…

    Vue 2023年5月28日
    00
  • vue页面使用多个定时器的方法

    下面是关于Vue页面使用多个定时器的方法的详细攻略: 一、前置知识 在使用Vue页面多个定时器之前,需要掌握以下知识: Vue.js的生命周期钩子函数:created、mounted、updated、destroyed setInterval和clearInterval的用法 二、方法一:使用Vue.js的watch属性 如果在Vue组件中同时使用多个定时器…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部