CSS转换不会更新悬停状态

时间:2013-05-16 02:59:11

标签: html css-transitions

转换对象时,在移动鼠标之前,悬停状态不会更新(带有: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;
}

旁注:SO不会让我在没有代码的情况下插入JSFiddle链接?

1 个答案:

答案 0 :(得分: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 Fiddle Demo

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