2012-04-09 18 views
1

Kann mir jemand helfen zu klären, wo das Problem in meinem Code ist.JavaScript SlideUp/SlideDown macht meine Fußzeile jumpy nach Folie

Ich möchte ein Element ausblenden und dann schieben, so dass das andere Element darunter sichtbar wird (Show) - das gleiche gilt für Slidedown.

Eigentlich funktioniert es, aber es macht meine Fußzeile jumpy jedes Mal, wenn es gleitet, was ist die Lösung?

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

Keine Notwendigkeit für '$ (openF)' - 'openF' ist bereits ein jQuery-Objekt. – ThiefMaster

+0

können Sie etwas HTML einfügen? – AlexC

+0

Die Verknüpfung mit einer externen Site mit Ihrem Code ist für SO als Q & A-Plattform nicht hilfreich. Versuchen Sie, relevanten Code in Ihre Frage einzubeziehen. –

Antwort

0

Ich bin nicht sicher, ob ich völlig Ihr Problem verstehen, ohne die HTML und CSS zu sehen, aber es klingt wie Sie padding auf das Element haben könnten, die Sie animieren.

Wenn Sie Ihre Animationen ausführen, treten sie auf, indem Sie die CSS-Höhe des Elements fortlaufend aktualisieren. Das Problem ist, wenn Sie Ihr Element mit einem Padding versehen haben, wird es am Ende der Hide-Animation übersprungen. (Dies liegt daran, dass Ihr Element selbst bei Höhe 0 immer noch die Höhe Ihrer Auffüllung hat.)

Die Lösung hierfür besteht darin, die Auffüllung auf ein Element in einem Wrapper anzuwenden, wo die Animation auf dem Wrapper erfolgt.

+0

Okay, bitte lesen Sie es von hier aus. http://www.charlesmudy.com/work/charlesmudy/ – Charles

+0

Leider blockiert mein Arbeitsproxy Ihre CSS-Dateien. –

+0

Ich verstehe. Haben Sie die Schaltfläche für die Kontaktseite und die Fußzeile beim Klicken gesehen? Es scheint auf der Seite in Ordnung zu sein. Bin sehr verwirrt. – Charles

0

Sie animieren sowohl auf slideUp/slideDown als auch auf show/hide mit jeweils 200 Millisekunden. Deshalb der Jumpy-Effekt. Übergeben Sie den Wert 200 nicht, um Funktionen anzuzeigen/auszublenden.

Ändern Sie diese ...

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

zu ...

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

Dies sollte der jumpy Problem loszuwerden.

+0

Danke Neo108 aber es hat es nicht gelöst ... kann das Problem von meinem CSS sein? ... Ich habe auch einige Probleme über SlideDown jumpy .. – Charles

+0

Ich replizierte das Problem auf meinem PC und es funktionierte, wenn ich tat, was ich vorgeschlagen. Vielleicht verstehe ich deine Frage nicht richtig. Möchten Sie, dass die Fußzeile fixiert bleibt, während sich das Kontaktformular öffnet/schließt? Das heißt, die Höhe des Inhaltsbereichs ist gleich, unabhängig davon, ob das Kontaktformular geöffnet oder geschlossen ist. – neo108

+0

Ja genau ... verwende Höhe 100% und Mindesthöhe 100% für meinen Inhalt. Ich habe nichts für meine Fußzeile. Ich möchte, dass es sich beim Öffnen ausdehnt und die Größe ändert, wenn es geschlossen wird. Nun .. es bleibt einfach beim Größenanpassung irgendwie hüpfen. Siehe von hier: www.charlesmudy.com/work/charlesmudy/contact.php – Charles

Verwandte Themen