1

私のコードのどこに問題があるのか​​ を明確にしてくれる人がいますか?

要素を非表示にしてからスライドアップしたいので、その下の他の要素が表示されます(表示)-同じことがスライドダウンにも当てはまります。

実際には動作しますが、スライドするたびにフッターがビクビクします。解決策は何ですか?

var openF = $('.openForm').css('color', '#FFF');
$('#contact').hide();

$(openF).live('click', function() {
    if ($(this).val() == "Open Contact Form") {
        $(this).val("Close Contact Form");
        $('#contactDT').slideUp(200);
        $('#contact').show(200);
    } else {
        $(this).val("Open Contact Form");
        $('#contactDT').slideDown(200);
        $('#contact').hide(200);
    }
});
4

2 に答える 2

0

スライドアップ/スライドダウンと表示/非表示の両方をそれぞれ200ミリ秒でアニメーション化しています。そのため、ジャンプ効果があります。200関数を表示/非表示にするために値を渡さないでください。

これを変える...

if ($(this).val() == "Open Contact Form") {
    $(this).val("Close Contact Form");
    $('#contactDT').slideUp(200);
    $('#contact').show(200);
} else {
    $(this).val("Open Contact Form");
    $('#contactDT').slideDown(200);
    $('#contact').hide(200);
}

に...

if ($(this).val() == "Open Contact Form") {
    $(this).val("Close Contact Form");
    $('#contactDT').slideUp(200);
    $('#contact').show();
} else {
    $(this).val("Open Contact Form");
    $('#contactDT').slideDown(200);
    $('#contact').hide();
}

これにより、厄介な問題を取り除くことができます。

于 2012-04-10T00:45:34.020 に答える
0

HTML と CSS を確認せずに問題を完全に理解しているかどうかはわかりませんが、アニメーション化している要素にパディングがあるようです。

アニメーションを実行すると、要素の CSS の高さが継続的に更新されてアニメーションが発生します。問題は、要素にパディングがある場合、非表示アニメーションの最後でスキップされることです。(これは、高さが 0 でも、要素がパディングの高さのままであるためです。)

これに対する解決策は、アニメーションがラッパー上で発生するラッパー内の要素にパディングを適用することです。

于 2012-04-09T18:12:44.720 に答える