現在、カスタムライトボックススクリプトを作成中です。イメージのサイズ変更のアニメーションがうまく機能していますが、小さな問題に遭遇しました。ライトボックスはユーザーの画面の中央に表示されますが、幅と高さをアニメーション化するとすぐに、画面中央には残りません。ちょうど古いの左と上の値を使用します。ここ要素をアニメートしますが、コンテナを中心に維持します
ライトボックス自体のマークアップは次のとおり
<div id="jqgal_container">
<div id="jqgal_nav_left" class="jqgal_nav"><</div>
<div id="jqgal_main">
<div id="jqgal_main_img"></div>
<div id="jqgal_footer">
<div id="jqgal_main_caption"><p></p></div>
<div id="jqgal_thumbnav_left" class="jqgal_thumbnav"><</div>
<div id="jqgal_thumbs">
<div id="jqgal_thumbs_container">
<ul></ul>
</div>
</div>
<div id="jqgal_thumbnav_right" class="jqgal_thumbnav">></div>
</div>
</div>
<div id="jqapp_nav_right" class="jqgal_nav">></div>
</div>
表示すべき画像を<img />
要素として#jqgal_main_img
内に格納されています。 #jqgal_main_img
の幅と高さをアニメーションしますが、コンテナ全体(#jqgal_container
)を画面の中央に保持したいと考えています。
私の質問は、子要素の幅をアニメーション化するにはどうしたら、それぞれコンテナの上端と左端の位置をアニメーション化することができますか?次のように
瞬間のイメージコンテナの幅と高さをアニメーション化するコードが見えます:
_resizeToFit : function(img_width, img_height, compFunc)
{
// Calculate the width and height needed:
var req_width = img_width;
var req_height = img_height;
this._elements.mainimg.animate({ width: req_width }, {
duration: 'fast',
complete: function() {
$.jqgal._elements.footer.width(req_width);
$.jqgal._elements.mainimg.animate({ height: req_height }, 'fast', function() {
if(compFunc != undefined) { compFunc.call(this); }
});
},
step : function() {
}
});
}
これは 'mainimg'の余白をアニメーション化しています。親要素( '#jqgal_container')のマージンをアニメートする必要があります。 – BenM
.parent()の詳細について編集しました –
ありがとう!私が間違っていない限り、これらの計算では、ユーザーのページ上のスクロール位置(scrollTop)は考慮されませんか? – BenM