2012-01-28 7 views
2

У меня есть боковая панель на моей странице. Когда пользователь изменяет размер браузера, элементы отображаются только в том случае, если они не вырезаны (в нижней части окна). Он работает так, как вы можете видеть на jsFiddle.Анимировать скрытие элементов на боковой панели с помощью jQuery

http://jsfiddle.net/MJ9VC/23/

Для теста: изменить размер браузера (убедитесь, высота окна меньше). Вы увидите, что некоторые предметы скрываются. Измените размер браузера (увеличьте высоту окна). Вы увидите некоторые элементы.

Проблема: Я преуспеваем делать анимацию из не показал к показал (плавно, показывая детали), но я не смог делать анимацию из показал к не показал.

Я не знаю, ясно ли я?

+0

Мне кажется, что вы выполняете анимацию только тогда, когда элемент (это) не отображается. "if (that.css ('visibility')! = 'visible') ...". –

+0

@ron Я знаю, но я не нашел решения. Вы можете попробовать настроить jsFiddle, если у вас есть идея ... Спасибо. – Bronzato

ответ

0

Вот ваше решение:

if (y <= itemBottom) { 
    if(!that.hasClass('hidden') && !that.is(':animated')){ 
     that.removeClass('visible').addClass('hidden','slow'); 
    } 
} 
else{ 
    if(that.hasClass('hidden') && !that.is(':animated')){ 
     that.addClass('visible','slow').removeClass('hidden'); 
    } 
} 

Порядок добавления/удаления скрытых/видимый важно. Вы также не хотите, чтобы возиться с ним, пока он выцветанию в/из, и вы также должны JQuery UI, чтобы анимировать добавление класса:

Демо: http://jsfiddle.net/AlienWebguy/jrvsB/

+0

Вау очень приятное решение! Большое спасибо :) – Bronzato

+0

Рад помочь :) – AlienWebguy

0

Я считаю, что проблема исходит от настройки видимости для скрытой

that.css('visibility','hidden'); 

Как только вы делаете, что она исчезнет, ​​независимо от непрозрачности вы устанавливаете.

Можете ли вы пропустить весь атрибут видимости и просто использовать непрозрачность? Поэтому, когда браузер получает малый вы делаете:

that.animate({ 'opacity': 0 }); 
+0

Я знаю, что that.css ('visibility', 'hidden'); это проблема. Я уже очень много стараюсь. Вы можете попытаться настроить мой jsFiddle, если вы думаете о решении ... Спасибо в любом случае. – Bronzato

+0

опционально, установите видимость на скрытую функцию обратного вызова 'animate'. Таким образом, он будет скрыт только после завершения анимации. http://api.jquery.com/animate/ – xbonez

+0

Mmmm снова проверен, и к сожалению, он не работает. Я сосать css. – Bronzato

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