簡體   English   中英

JavaScript SlideUp/SlideDown 使我的頁腳在滑動后跳動

[英]JavaScript SlideUp/SlideDown making my footer jumpy after slide

有人可以幫我澄清我的代碼中的問題所在。

我想隱藏一個元素,然后向上滑動,所以它下面的另一個元素變得可見(顯示)——同樣的事情也適用於向下滑動。

實際上它有效,但每次滑動時它都會讓我的頁腳跳動,解決方案是什么?

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);
    }
});

在沒有看到 HTML 和 CSS 的情況下,我不確定我是否完全理解您的問題,但聽起來您可能在正在設置動畫的元素上進行了填充。

當您運行動畫時,它們會通過不斷更新元素的 CSS 高度而發生。 問題是如果你的元素上有填充,它會在隱藏 animation 的末尾跳過。(這是因為即使高度為 0,你的元素仍然是填充的高度。)

解決方案是將填充應用於包裝器內的某個元素,其中 animation 將出現在包裝器上。

您在 slideUp/slideDown 和 show/hide 上分別設置了 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();
}

這應該擺脫跳動的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM