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

实现鼠标悬停时显示元素或文本的功能,可以使用 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中状态管理器(vuex)详解以及实际应用场景

    Vue中状态管理器(Vuex)详解以及实际应用场景 一、什么是Vuex Vuex是一个用于Vue.js应用程序的状态管理模式。它采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension ,提供了诸如零配置的 time-travel 调试、状态快照导…

    Vue 2023年5月27日
    00
  • 结合Vue控制字符和字节的显示个数的示例

    针对这个问题,我可以提供以下完整攻略: 1. 需求说明 假设现在有这样一个需求,需要在Vue应用中控制一个文本框显示的字符个数,而不是字节数。可能有用户会输入一些中文字符或者emoji表情,这些字符对应的字节数并不相等。因此,我们需要在Vue应用中计算字符个数,才能使文本框的显示效果符合预期。 2. 解决方案 2.1. 方案概述 为了解决这个问题,我们可以使…

    Vue 2023年5月27日
    00
  • 浅谈vue2的$refs在vue3组合式API中的替代方法

    下面是关于“浅谈vue2的$refs在vue3组合式API中的替代方法”的详细讲解攻略: 1、什么是$refs 在Vue2中,我们可以通过在模板中给DOM元素添加ref属性,然后通过this.$refs来访问这个元素或组件实例,这个访问实例的方式就是Vue2中的$refs。 2、在vue3组合式API中$refs有什么改变 在Vue3中,Vue官方推荐使用组…

    Vue 2023年5月28日
    00
  • Vue中使用 setTimeout() setInterval()函数的问题

    关于Vue中使用setTimeout()和setInterval()函数的问题,需要考虑到以下几个方面的内容: 在Vue中如何使用setTimeout()和setInterval()函数 在Vue中使用setTimeout()和setInterval()函数需要注意哪些问题 Vue中使用setTimeout()和setInterval()会涉及到的一些示例及…

    Vue 2023年5月29日
    00
  • Vue.js实现可排序的表格组件功能示例

    当我们开发一些管理性质的网站时,表格是非常基本的需求。常见的表格功能有分页、排序、搜索等,其中销售额这类的表格,排序功能尤其重要。 Vue.js是一种渐进式JavaScript框架,具有轻量级、高效率、易上手等优点,因此成为了前端开发中的热门工具。下面介绍如何通过Vue.js实现可排序的表格组件功能示例。 第一步:拆分组件 首先将一个整体的表格组件拆分成多个…

    Vue 2023年5月29日
    00
  • JavaScript+CSS实现的可折叠二级菜单实例

    下面是“JavaScript+CSS实现的可折叠二级菜单实例”的完整攻略。 1. 实现思路 该二级菜单实例的实现思路如下: 初始状态二级菜单处于收缩状态,点击主菜单可以展开或关闭对应的二级菜单。 主菜单和二级菜单分别定义为一组HTML结构,通过CSS样式实现布局和样式。 通过JavaScript事件绑定实现主菜单点击后对应的二级菜单的展开和收缩。 2. HT…

    Vue 2023年5月28日
    00
  • vue-router懒加载速度缓慢问题及解决方法

    Vue.js是一个轻量级的前端JavaScript框架,在构建单页面应用时非常高效且易用。Vue提供的vue-router路由管理器也非常好用,可以让我们轻松地进行路由控制和组件管理。然而,在使用vue-router时,我们可能会遇到懒加载速度缓慢的问题,本文将详细介绍这个问题的成因以及解决方法。 什么是vue-router懒加载 Vue.js中的路由可以通…

    Vue 2023年5月28日
    00
  • vue如何将v-for中的表格导出来

    当我们在使用Vue的v-for指令来动态渲染表格时,如何将表格导出成Excel或CSV文件呢?下面就是详细的攻略。 步骤一:安装依赖库 在Vue项目中,我们需要使用js-xlsx和file-saver这两个库来实现导出表格功能。 npm install file-saver xlsx -S 步骤二:定义数据和表头 在Vue组件中,我们需要定义要导出的数据和表…

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