Я пытаюсь сделать много анимаций с помощью jQuery на нескольких страницах, и мне интересно, как это сделать проще, потому что это занимает слишком много времени и имеет много места для ошибок во временных рамках, которые я должен сделать.
$( document )
.ready( fade1 );
function fade1(){
$("#fade")
.delay(1000)
.fadeIn(1000, fade2)
function fade2(){
$("#fade2")
.delay(1000)
.fadeIn(1000, s1)
function s1(){
$("#s1")
.delay(300)
.fadeIn(100, s2)
function s2(){
$("#s2")
.delay(300)
.fadeIn(100, s3)
function s3(){
$("#s3")
.delay(300)
.fadeIn(100, s4)
function s4(){
$("#s4")
.delay(300)
.fadeIn(100, s5)
function s5(){
$("#s5")
.delay(300)
.fadeIn(100, s6)
function s6(){
$("#s6")
.delay(300)
.fadeIn(100, s7)
function s7(){
$("#s7")
.delay(300)
.fadeIn(100, s8)
function s8(){
$("#s8")
.delay(300)
.fadeIn(100, s9)
function s9(){
$("#s9")
.delay(300)
.fadeIn(100, s10)
function s10(){
$("#s10")
.delay(300)
.fadeIn(100, s11)
function s11(){
$("#s11")
.delay(300)
.fadeIn(100, s12)
function s12(){
$("#s12")
.delay(300)
.fadeIn(100, all)
function all(){
$("#s1, #s2, #s3, #s4, #s5, #s6, #s7, #s8, #s9, #s10, #s11, #s12")
.delay(100)
.fadeOut(500)
.delay(100)
.fadeIn(500);
}}}}}}}}}}}}}}};
2 ответа
Глядя на использование jQuery, как в вашем примере, вы могли бы сделать что-то вроде следующего:
$(document).ready(function(){
var totalElements = 12,
firstEl = 1,
duration = 1000;
var fadeNext = function(){
firstEl++;
if(firstEl <= totalElements) {
$('#fade'+firstEl).fadeIn(duration, fadeNext);
}
return;
}
$("#fade").delay().fadeIn(duration, fadeNext);
});
Я бы посмотрел на использование CSS-анимации и / или переходов. Таким образом, вам даже не нужно использовать javascript.
Это будет выглядеть примерно так
@keyframes my-fade-in {
0% { opacity: 0; }
100% { opacity: 1; }
}
#fade {
animation-name: my-fade-in;
animation-duration: 1s;
animation-delay: 1s;
}
Это приведет к немедленному отображению анимации my-fade-in в элементе #fade с задержкой в одну секунду.
Если вы хотите применить анимацию программно, вы можете сохранить свойства анимации в классе и применить этот класс к элементу, который вы хотите анимировать. Например;
CSS:
@keyframes my-fade-in {
0% { opacity: 0; }
100% { opacity: 1; }
}
.fadein {
animation-name: my-fade-in;
animation-duration: 1s;
animation-delay: 1s;
}
Javascript (запуск которого вызовет анимацию затухания в элементе #fade):
$( "#fade" ).addClass( "fadein" );
Это немного упрощает ситуацию для сценариев, подобных описанным выше, где вам нужен набор различных анимаций, применяемых к набору различных объектов.
Вы даже можете создать более продвинутую анимацию с дополнительными ключевыми кадрами (вместо показанных значений 0% и 100%).
Я действительно не могу дать вам никаких советов о том, как лучше всего реализовать это, не зная причины или цели ваших анимаций - я не уверен, почему у вас так много элементов с уникальными идентификаторами с анимацией, применяемой таким образом , но я все же надеюсь, что это поможет :)
ПРИМЕЧАНИЕ. Посетите эту страницу, чтобы увидеть диаграмму совместимости браузеров, поддерживающих анимацию CSS.
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
.fadeToggle()
?