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

问题描述 投票:0回答:2

我想要一个悬停按钮,只在其中设置嵌套元素的样式。目前在我的代码中,将鼠标悬停在单个按钮上将在其所有兄弟按钮中设置嵌套元素的样式。

有什么建议?

<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;
}
javascript vue.js hover frontend
2个回答
1
投票

如果你只关心样式,你可以使用:hover选择器使用纯css取得成功。

用例示例:

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

我想要一个悬停按钮,只在其中设置嵌套元素的样式。

这不是真的,你的p标签不在你的button标签内(即使你这样缩进你的代码)。


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>
© www.soinside.com 2019 - 2024. All rights reserved.