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 には非常に奇妙な癖が 1 つあります。要素を内外にアニメーション化すると、要素li
が本当に寒くて震えているかのように「揺れ」ます。ライブの例で動作を確認できます: http://missmd.org/ (編集: バグは現在修正されています)
以前に jQuery を使ってたくさんのものをアニメーション化したことがありますが、この動作を見たことはありません。それが発生する理由と、それを回避する方法について説明はありますか? 要素を右に浮かせて左にアニメートしているからではないかと思っています。このバグは頭がおかしくなり、全体的なプレゼンテーションを大幅に損ないます (少なくとも私にとっては)。他にこれを見た人はいますか?
編集して明確にします。 「震える」のは実際のli
要素ではなく、その中のテキストがわずかに揺れますが、アニメーションが実行されると左から右に非常に速く揺れます。私は困惑しています。
編集2: 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 エンジンのバグである可能性もあり、私たちができることは何もありません。