2014-02-09 4 views
2

У меня есть многоэтапная веб-форма на веб-сайте. Когда человек щелкает дальше, div один исчезает, когда div два исчезает. Проблема, которую я вижу, заключается в том, что div one исчезает, когда div two исчезает ниже div one, а затем прыгает после того, как div один исчезает.Crossfade Два divs Использование jQuery

Как предотвратить это и на самом деле перекреститься?

HTML

<div class="step-1"> 
    <!-- CODE --> 
</div > 

<div class="step-2"> 
    <!-- THIS DIV IS HIDDEN TO BEGIN WITH --> 
</div > 

JS

$(".step-1-next").on("click", function() { 
    $(".step-1").fadeOut("slow"); 
    $(".step-2").fadeIn("slow"); 
    return false; 
}); 
+0

@snowburnt - Вы должны отправить ответ. Ваш ответ работает и выглядит лучше, чем другой. – L84

+0

Done, другой пост был довольно приятным, если вы приспособили его скрипку, так что оба верха одинаковы, и они будут исчезать одновременно, и они будут занимать одно и то же пространство. Mine заставит второго ждать от обратного вызова от fadeOut до вызова fadeIn. – Snowburnt

+0

@Snowburnt - Согласен, но это вызвало проблемы в моем случае, хотя я не уверен, почему. Ваше решение работает хорошо, даже с паузой. – L84

ответ

4

Попробуйте это:

$(".step-1-next").on("click", function() { 
    $(".step-1").fadeOut("slow", function(){ 
     $(".step-2").fadeIn("slow"); 
     }); 
    }); 

Это приведет к тому, что функция fade начнет ждать, пока ее не погаснет.

+1

Это полезно знать, но это не кроссфейд; он просто выцветает из одного элемента, а затем исчезает один элемент. –

+0

Я никогда не думал, что кроссфейд выглядел правильно, когда делалось одновременно – Snowburnt

2

Рабочий пример http://jsfiddle.net/JUMJY/

Причина step-2 ДИВ прыгает в step-1 положение когда S tep-1 полностью скрыта, из-за расположения. Или ее отсутствие. Для этого вам нужно будет использовать либо position absolute, либо position fixed. Я использовал абсолютный в примере, который я создал для вас.

.step-1 { 
    background: blue; 
    top: 20px; 
    left: 20px; 

} 

.step-2 { 
    background: red; 
    display: none; 
    top: 130px; 
    left: 20px; 
} 

div { 
    width: 100px; 
    height: 100px; 
    margin: 20px; 
    position: absolute; 
} 

button { 
    position: absolute; 
    right: 50px; 
    top: 0; 
} 
+0

Когда divs находятся в позиции 'left: 0; top: 0; 'он вызвал странное поведение, и он все еще подпрыгнул. – L84

+0

@Lynda убедитесь, что у вас есть позиция: absolute; ', также если у вас есть маржа или отступы, которые могут повлиять на нее. – CRABOLO

+0

У меня было 'position: absolute;'. Не знаете, в чем проблема. – L84

Смежные вопросы