【问题标题】:Why does my hover state stay activated after I animate an element?为什么我的元素动画后我的悬停状态保持激活状态?
【发布时间】:2014-10-15 22:10:56
【问题描述】:

我有一个按钮,点击时会向左移动。这部分效果很好,但我对为什么悬停状态保持活动状态直到我移动鼠标感到困惑。我已经创建了一个jsfiddle 的问题。点击按钮,不要移动鼠标,注意动画完成后也会触发悬停状态。

这是我的代码 HTML:

<a href="#">Click</a>

CSS:

a{
color: white;
background: blue;
padding: 10px;
position: absolute;
left: 0;

}
a:hover{
background: green;
}

JS:

$('a').click(function(){
  var aW = $(this).outerWidth();
  $(this).animate({
      'left': aW
  });
});

【问题讨论】:

  • 可能是因为悬停状态是由mouse events 驱动的,当您从光标下方为元素设置动画时不会触发这些事件...
  • 是的,您需要使用 javascript 强制执行某些操作。喜欢点击事件中的$(this).css('background','blue');
  • a:hover{ 背景:绿色; } 你已经有了 CSS3 悬停功能,为什么要从 jquery 重新申请?
  • 感谢反馈,@canon 是对的,鼠标事件不会触发。我只能暂时保持原样。

标签: jquery css


【解决方案1】:

我认为这是因为实际文本“链接”的属性默认为宽度 100%(屏幕宽)和默认高度。因此,当您单击它时,您实际上仍会悬停文本。如果单击它并将鼠标移远,悬停效果将消失。

【讨论】:

    【解决方案2】:

    建议: 使用 cloneNode() 函数。 单击按钮后,创建它的克隆。 在克隆元素上触发动画。

    原因: 悬停时的元素将保留其事件,但克隆元素不会。

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 1970-01-01
      • 2014-02-08
      • 2016-03-01
      • 1970-01-01
      • 2021-11-15
      • 2016-05-30
      • 1970-01-01
      • 2014-01-25
      相关资源
      最近更新 更多