2010-06-19 1 views
4

Поскольку мне нужно снова fadeIn() вернуть другой элемент того же размера, есть ли способ fadeOut(), чтобы пространство сохранялось, так что остальные элементы не повторяются -flow в течение секунды, а затем fadeIn() вернет другой элемент с тем же размером?В jQuery, можете ли вы fadeOut() не потерять недвижимость элемента? (invisible vs display: none)

ответ

9

Два метода приходят на ум:

  1. Wrap элемент в DIV, который занимает правильное количество места.
  2. Используйте способ .animate, чтобы изменить непрозрачность элемента с 100% до 0%, затем, когда анимация завершена, замените новый элемент и еще раз используйте анимацию, чтобы изменить непрозрачность от 0% до 100%.
+18

3. использование 'fadeTo()' :) –

+0

Йонут дать правильный ответ +1. – jmcollin92

2

мое предложение вам обернуть его DIV ... и поставить ту же размерность, что на DIV ...

2

Сохраните элемент, который вы хотите затухать внутри фиксированного <div style="display:block;width:300px;height:200px;">, а затем, если вы спрячете элемент внутри него, это не повлияет на макет вообще.

0

Я сделал свое собственное исправление. Перед тем, как запустить FADEOUT, я запустить эту функцию:

/** 
    * Keep the window height, to avoid user being thrown up (i.e. on fade out, remove, hide, etc) 
    */ 

     function keepHeight() { 
      $('body').css('min-height', $(document).height()); 
     } 

Так, например:

/** 
* Keep window height 
*/ 

    keepHeight(); 

/** 
* Fade out 
*/ 

    $('#someDiv').fadeOut();