私はJQueryのアニメーションメニューをやっています。これは、私の質問に関連するコードの一部です。
私は(JQueryを使用して)アニメーション化されたdivをたくさん持っているので、左右に拡大します。div では背景画像を使用します。div が拡大および縮小するときに、画像が動かないように配置したままにします。
これは (動作する) 自己完結型の完全な例です。これを .html として保存して試してください。(どうにかスタックオーバーフローでこれを添付できますか?)
<!DOCTYPE html>
<html>
<head>
<title>JQuery Jitter Bug</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style>
body { background: #0f1923; margin:0px; padding:0px;}
div#logo {
border: 0px;
margin: 0px;
padding: 0px;
background-image: url("http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif");
background-position:20%;
position: absolute;
height: 53px;
left: 100px;
width: 100px;
top: 50px;
}
</style>
</head>
<body>
<div id="logo"></div>
<script>
$('div#logo').mouseenter(function(){$(this).animate( {left: "0px", width: "600px"}, 1000); }); /* show */
$('div#logo').mouseleave(function(){$(this).animate( {left: "100px", width: "100px"}, 1000); }); /* crop */
</script>
</body>
</html>
2 つの質問:
1) バックグラウンド ポジションのパーセンテージはどのように計算されますか? 試行錯誤の結果、ここでは 20% が正しいことがわかりました。div は、展開時は左 = 0、幅 = 600 ピクセル、折りたたみ時は左 = 100、幅 = 100 です。それがどうやって20%になるの?折りたたまれたサイズの左端であるべきではありませんか (100/600 = 16.666%?) 明らかにそうではありませんが、なぜですか?
2) これは Firefox では桃色に見えますが、Safari と Chrome (私は OSX を使用しています) では、アニメーションの進行中に画像が揺れます。他のブラウザで見栄えが良くなるように修正する方法について何か考えはありますか?