Я нашел обсуждение моей проблемы здесь: http://p.karageorgakis.com/blog/jquery_simulating_a_delay_function_between_fade_in_out_effects/
Среди предложенных решений, в JavaScript setTimeout()
сфабрикованной другие решения, по крайней мере, для моих целей.
Вот код, я пошел с:
$(function() {
$("#tabs").tabs();
$("#tabs").fadeIn(500);
$("#li1").fadeIn(500);
setTimeout('$("#li2").fadeIn(500)', 300);
setTimeout('$("#li3").fadeIn(500)', 600);
setTimeout('$("#li4").fadeIn(500)', 900);
});
Самой вкладкой виджет, а также элементы списка все готовы display:none
в самом начале.
Была другая проблема, которую я поделюсь, потому что это привело меня к хорошему решению затухания.
Этот виджет необходимо плавать слева от какого-либо другого контента, но также необходимо скрывать до полного экземпляра JQuery. fadeIn()
не работал с элементом, установленным на visibility:hidden
; это должно было быть display:none
, но это заставило виджет смещать окружающий контент и появляться внезапно, что выглядело действительно ужасно. Угасание было способом смягчить это.
Оглядываясь назад, возможно, я мог бы заблокировать (известные) размеры виджета вкладки, так или иначе мне нравится результат, который я получил!
Простое перечисление звонков в fadeIn («медленное») на каждый элемент приводит к тому, что все замирание в одно и то же время. Я не знаю, как управлять временем, чтобы задержать постепенное исчезновение элемента до тех пор, пока предыдущий не будет завершен. – Ken
Возможно, бесполезным способом сделать это может быть использование функции обратного вызова fadeIn и использование вложенных fadeIn. Обратный вызов не вызывается до завершения анимации, поэтому каждый последующий fadeIn не будет вызываться до тех пор, пока предыдущий не будет завершен. Другой (возможно, грязный) вариант - использовать какой-то таймер спящего режима(). – amfeng
Идея обратного вызова звучит неплохо. Беспощадно, элегантно. Попробуем завтра - здесь 1 час. Благодаря! – Ken