我可以用Vue在鼠标上成功添加一个类.但我想在鼠标离开元素时删除该类.Vue中处理这个问题的惯用方法是什么?

<template>
  <div id="navigation">
    <div class="nav-container">
      <nav>
        <router-link to="/" class="home">Ping Party</router-link>
        <div class="navigation-actions">
          <router-link to="/sign_in" v-if="!isLoggedIn" class="sign_in">Sign In</router-link>
          <router-link to="/sign_up" v-if="!isLoggedIn" @mouseover.native="mouseOver" class="sign_up" ref="sign_up">Sign Up</router-link>
          <router-link to="/users" v-if="isLoggedIn" class="users">Users</router-link>
          <v-btn :click.prevent="signOut()" v-if="isLoggedIn">Sign Out</v-btn>
        </div>
      </nav>
    </div>
  </div>
</template>

<script>
  import SignUp from "../forms/SignUp";
  import SignIn from "../forms/SignIn";

  export default {
    components: {
      SignUp,
      SignIn
    },
    computed: {
      isLoggedIn () {
        return this.$store.getters.isLoggedIn
      }
    },
    methods: {
      signOut: function() {
        this.$store.commit("LOGOUT")
        this.$store.commit("FLASH_MESSAGE", {
          message: "Signed Out Successfully",
          show: true,
          styleClass: "error",
          timeOut: 4000
        })
        this.$router.push('/')
      },
      mouseOver: function() {
        this.$refs.sign_up.$vnode.elm.classList.add("hovered")
      }
    }
  }
</script>

正如您在mouseover上看到的,我调用了mouseover函数,这成功地将类添加到元素中.但现在,当用户离开元素时,类仍然存在.当用户离开元素时,如何让类移除?谢谢你的帮助.

推荐答案

mouseovermouseout,并以此为基础设置课程.

console.clear()

new Vue({
  el: "#app",
  data:{
    isHovering: false
  }
})
.hovering{
  color: red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
  <h1 @mouseover="isHovering = true" 
      @mouseout="isHovering = false" 
      :class="{hovering: isHovering}">
    {{ isHovering ? "Woot! Hovered" : "Hover over me" }}
  </h1>
</div>

或者直接使用CSS.

console.clear()

new Vue({
  el: "#app",
  data:{
    isHovering: false
  }
})
h1:hover{
  color: red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
  <h1 @mouseover="isHovering = true" 
      @mouseout="isHovering = false" >
    {{ isHovering ? "Woot! Hovered" : "Hover over me" }}
  </h1>
</div>

Vue.js相关问答推荐

vuex 未知动作类型:addTodo

Nuxt 2.15.7 的构建错误 - 无法解析 CSS @font-face URL

如何使用 vue.js 获取本地 html 文件?

指定一个 vue-cli vue.config.js 位置

未捕获的错误:[vue-composition-api] 必须在使用任何函数之前调用 Vue.use(plugin)

一个 div 组件中的 Vue.js 2.0 路由链接

如何修复跨域读取阻塞 (CORB) 阻止了 MIME 类型应用程序/json 的跨域响应问题?

ECMA6 中 nameFunction() {} 和 nameFunction () => {} 的区别

为什么 CSS 关键帧动画在具有范围样式的 Vue 组件中被 destruct ?

使用 Vue.js (cdn) 在特定元素上切换显示/隐藏

Nuxt 打开链接到模态

SVG 加载 vue-svg-loader; [Vue 警告]:无效的组件定义

从 Url 中删除查询字符串参数

Laravel 事件未广播

包含 Vue 组件的 HTML 字符串的 Nuxt 渲染函数

Vue组件未在laravel 5.3中使用Passport 显示

如何从 keep-alive 中销毁缓存的 Vue 组件?

嵌套组件

组件已注册但未使用 vue/no-unused-components

如何从扩展面板(Vuetify)中删除阴影?