Событие Animationend не срабатывает, когда анимация действительно заканчивается

эта штука сводит меня с ума.

У меня есть такая анимация:

.animated-debug {
    -webkit-animation-duration: 5s;
            animation-duration: 5s;
    -webkit-animation-fill-mode: both;
            animation-fill-mode: both;
}
@-webkit-keyframes bounceInAlt {
    from, 70%, to {
        -webkit-animation-timing-function: cubic-bezier(0.215, 0.6, 0.355, 1);
                animation-timing-function: cubic-bezier(0.215, 0.6, 0.355, 1);
    }
    0% {
        opacity: 0;
        -webkit-transform: scale3d(0, 0, 0);
                transform: scale3d(0, 0, 0);
    }
    70% {
        -webkit-transform: scale3d(1.01, 1.01, 1.01);
                transform: scale3d(1.01, 1.01, 1.01);
    }
    to {
        opacity: 1;
        -webkit-transform: scale3d(1, 1, 1);
                transform: scale3d(1, 1, 1);
    }
}

@keyframes bounceInAlt {
    from, 70%, to {
        -webkit-animation-timing-function: cubic-bezier(0.215, 0.6, 0.355, 1);
                animation-timing-function: cubic-bezier(0.215, 0.6, 0.355, 1);
    }
    0% {
        opacity: 0;
        -webkit-transform: scale3d(0, 0, 0);
                transform: scale3d(0, 0, 0);
    }
    70% {
        -webkit-transform: scale3d(1.01, 1.01, 1.01);
                transform: scale3d(1.01, 1.01, 1.01);
    }
    to {
        opacity: 1;
        -webkit-transform: scale3d(1, 1, 1);
                transform: scale3d(1, 1, 1);
    }
}

.bounce-in-alt {
    -webkit-animation-name: bounceInAlt;
            animation-name: bounceInAlt;
}

и это javascript для получения события окончания анимации:

 $("#my_id").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
        console.info("Entrato in animation end.");
    });

Проблема здесь в том, что это событие срабатывает до того, как анимация действительно закончится, я бы ожидал, что оно сработает через 5 секунд продолжительности и только один раз, вместо этого он срабатывает через одну секунду после начала анимации и несколько раз.

Что я делаю не так?

РЕДАКТИРОВАТЬ

После тестирования некоторых решений выяснилось, что проблема привела к использованию:

document.addEventListener("DOMContentLoaded", function() { ... });

в качестве оболочки для сценария, вместо этого используйте jQuery:

$(document).ready(function() { ... });

как обертка полностью решила проблему.

Действительно необычное поведение, у некоторых других была такая же проблема?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
612
1

Ответы 1

Я сделал jsfiddle, и ваш код мне подходит, см. https://jsfiddle.net/qt8znvsx/4/. Я не уверен, правильный ли HTML, потому что вы не дали его нам. Не могли бы вы взглянуть, пожалуйста?

<div id = "my_id">
    <div class = "animated-debug bounce-in-alt">
        Helloo is it me? You're looking for
    </div>
</div>

Я тестировал это в Chrome и Firefox.

После некоторого тестирования выяснилось, что проблема была связана с использованием document.addEventListener ("DOMContentLoaded", function () {... вместо $ (document) .ready (function () {... для упаковки остальной части скрипта странное и неожиданное поведение

Alessio Ferri 05.07.2018 12:24

Другие вопросы по теме