4

:hover当您转换对象时,直到您移动鼠标,悬停状态才会更新(带有 的 CSS 规则)。

当您将 DOM 元素移动到用户的鼠标下方(使用transition或其他等效项)时,悬停状态在鼠标移动之前不会更新。有什么解决方法吗?我不想进入花哨的 JS 来触发“鼠标悬停”事件。

JSFiddle:http: //jsfiddle.net/forestka/8xJkR/1/

HTML:

<div id="below">
  This is the one below. (Now move the mouse.)
</div>
<div id="hover">
  Click me! (But don't move the mouse after you click)
</div>

CSS:

#hover:hover,
#below:hover {
  background-color: #f00;
}

#below {
  padding:10px;
  position: absolute;
  top:0;
  left:0;
}

#hover {
    background-color: #ddd;
    padding: 10px;
    position: absolute;
    left: 0;
    top:0;
    transition: top 1s ease;
    z-index: 100;
}

#hover.hidden {
    top: 50px;
}

旁注:所以不会让我插入没有代码的 JSFiddle 链接?

4

1 回答 1

1

这很奇怪。IE10 似乎也有相同的行为。在主要的 3 种浏览器中,Firefox 似乎是唯一可以满足您的需求的浏览器。(显示隐藏 div 的悬停状态,因为它变得可见,而不必移动鼠标使其显示悬停状态)

这显然不是您想要的,但如果您需要解决方法,您可以执行以下操作:

$("#hover").click(function() {
    $("#hover").addClass("hidden");
    $("#below").trigger("mouseover");
});

$("#below").hover(function() {
     $("#below").css("background-color", "#f00");
}, function () {
    $("#below").css("background-color", '');
});

JS 小提琴演示

有人可能只使用 CSS 有更好的解决方案,但我想无论如何我都会给你的问题一个答案。

于 2013-05-16T18:24:43.047 回答