我li
在一个简单的代码片段中使用 jQuery 为元素的宽度设置动画。我hover()
用作处理程序并.animate()
为宽度设置动画。这是我的代码。
$('li').each(function() {
//store the original width of the element in a variable
var oldWidth = $(this).width();
$(this).hover(
function() {
//when the mouse enters the element, animate width to 900px
$(this).animate({width: '900px'}, 600, 'linear')
},
function() {
//when the mouse leaves, animate back to the original width
$(this).animate({width: oldWidth}, 350, 'linear')
}
);
});
代码真的很简单并且可以工作,但在 Chrome 中有一个非常奇怪的怪癖。当动画元素进出时,li
元素会“颤抖”,就好像它们真的很冷并且在颤抖一样。您可以在现场示例中看到此处的行为:http: //missmd.org/(编辑:错误现已修复)
我之前用 jQuery 制作了很多东西,但从未见过这种行为。是否有任何解释为什么会发生以及如何解决它?我想知道是不是因为我已经将元素浮动到了右边并且动画到了左边。该错误令人抓狂,并且极大地影响了整体演示(至少对我而言)。其他人以前见过这个吗?
编辑澄清:它不是“颤抖”的实际li
元素,而是其中的文本在动画运行时从左到右非常快速地轻微但明显地抖动。我难住了。
编辑二:在稍微摆弄 CSS 之后,我只能在Chrome中重现效果(对我来说是 21.0.1180.60 beta-m)。在 Firefox 中,它按预期工作。它在 IE 中也很有效。非常讽刺的是,Chrome(通常很适合这些东西)现在给我带来了麻烦。拉出头发,检查理智
这是我的 HTML,可帮助您深入了解这一点。我们在 ChrisFrancis 的 jsFiddle 中重现了这个问题。
<nav>
<ul class="nav">
<li class="one">
<a href="homeandnews/">
<span class="title">Home and News</span>
<br/>
<span class="subtitle">Learn more about me and read general updates!</span>
</a>
</li>
</ul>
<nav>
我完全被难住了。这也可能是 Chrome/V8 JS 引擎中的一个错误,我们对此无能为力。