如何在Vue Js中进行选择性悬停?

时间:2019-04-06 19:02:12

标签: javascript vue.js hover frontend

我想要一个悬停按钮以仅设置其中嵌套元素的样式。 目前,在我的代码中,将鼠标悬停在单个按钮上将为其所有同级按钮内的嵌套元素设置样式。

有什么建议吗?

<div id="app">
  <button
   v-on:mouseover="isHovering = true"
   v-on:mouseout="isHovering = false">Button 1
  </button>
    <p v-bind:class="{hovering: isHovering}">
    {{ isHovering ? "Yes" : "No" }}
    </p>
  <button
    v-on:mouseover="isHovering = true"
    v-on:mouseout="isHovering = false">Button 2
  </button>
    <p v-bind:class="{hovering: isHovering}">
    {{ isHovering ? "Yes" : "No" }}
    </p>
</div>
const app = new Vue({
  el: "#app",
  data: {
    isHovering: false
  }
})


.hovering {
  display: red;
}

2 个答案:

答案 0 :(得分:1)

在当前代码中,您只有1个数据属性“ isHovering”,并且您的两个<p>元素都使用它来有条件地使用.hovering {display:red}。

您可以为第二个按钮创建另一个数据属性。如果您打算使用很多按钮来执行此操作,则您的代码将很快失控。

<button
  v-on:mouseover="isSecondButtonHovering = true"
  v-on:mouseout="isSecondButtonHovering = false">Button 2
</button>
<p :class="{hovering: isSecondButtonHovering}">
  {{ isSecondButtonHovering ? "Yes" : "No" }}
</p>

答案 1 :(得分:1)

如果您只关心样式,则可以使用:hover选择器来使用纯CSS成功。

您的用例示例:

button:hover + p {
  background-color: red;
}
  

我希望悬停按钮仅对其中的嵌套元素设置样式。

这不是真的,您的p标记不在button标记内(即使您像这样缩进了代码)。