Gera11
@Gera11

Как динамически менять длительность анимации?

Есть вот такие пульсирующие кружки.
Надо, чтобы они пульсировали рандомно - длительность анимации у каждого своя и на следующей итерации изменяется.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function setAnimation(el) {
  $(el).css('animation', `shadow-pulse ${1 + Math.random() * 3}s`);
}

$('.mr-2').on('animationend', function() {
  $(this).css('animation', '');
  setTimeout(setAnimation, 0, this);
}).get().forEach(setAnimation);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@EastJesus
Выбираем все элементы, создаем массивы с заданными значениями, по интервалу выбираем случайные значения и изменяем анимацию

const animations = ["shadow-pulse-big", "shadow2-pulse", "shadow2-pulse-big"];
const intense = ["1.5", "6", "0.5"]


$(elements).each((el) => {
    let random_animation = Math.floor(Math.random() * animations.length);
    let random_intense = Math.floor(Math.random() * intense.length);

    setInterval(() => {

        let old_random_animation = random_animation
        let old_random_intense = random_intense

        $(el).css({ animation: `${old_random_animation} ${old_random_intense}s infinite` });

        random_animation = Math.floor(Math.random() * animations.length);
        random_intense = Math.floor(Math.random() * intense.length);
    }, old_random_intense * 1000)
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы