DOMからelemntsを削除できる関数を作成しようとしていますが、私は解決できない問題に直面しています。jQuery:高さのジャンプ/シフトを伴うアニメーション
コードは次のようになります。
function closeMessage(message) {
var height = $(message).outerHeight();
$(message).fadeTo("fast", 0.01).animate({marginTop: -height, marginBottom: 0}, function(){
$(message).remove();
});
}
変数message
が削除される要素です。 CSSの中で私はmargin-top
とmargin-bottom
をメッセージ要素に割り当てました。
上記の関数を実行すると、メッセージ要素は0.01%の不透明度(=ほとんど見えませんが、まだそこにあります)にフェードしてから、負のマージンがメッセージ要素の下の内容が上にスライドするという効果を作り出します。その後、コールバックでmessage-elementがDOMから削除されます。
メッセージエレメントの下のコンテンツは、小さなぎりぎりのように、最後の数ピクセルを上にジャンプするという問題があります。 1つ以上のメッセージボックスが存在する場合にのみ、このような現象が顕著になります。マージンが大きくなるほど、目立つようになります。あなたが見ることができるように、私はmarginBottom: 0
で問題を解決しようとしましたが、うまくいきません。
また、outerHeight();
,outherHeight(true);
およびinnerHeight();
のような異なるheight();
の機能を試しましたが、それでも問題は解決しませんでした。
私の質問は:上記のコードに何か間違っていますか?なぜアニメーションの最終段階でその小さな「ジャンプ」がありますか?これは正常な動作ですか?
あなたが作業例を供給することはできますか?私はちょうど2つのdivで簡単なページでそれをテストしました。一番上のものが取り除かれ、一番上のものが上に動く。 –
実際のプロジェクトは内部的なものなのでリンクできませんが、ここでは例を作りました(http://jsfiddle.net/jDcaH/)。一番下のメッセージは必ず閉じてください。あなたが私に尋ねるなら、アニメーションは滑らかではありません。 – Sven
ええ、あなたの例は、私にとってはうまくいきます。滑らかで、揺れはありません。 Firefox 10.0.2を使用していますが、どのブラウザを使用していますか? –