toggleClass, когда объект в области просмотра запускает анимацию CSS3

Уже несколько дней я очень старался, чтобы это сработало, но я нахожусь в конце пути, вот почему я прошу вас о помощи.

У меня есть фрагмент кода (ниже), который может добавить класс к объекту, если он находится в области просмотра. Это идеально подходит для запуска любой CSS3-анимации. Код работает в chrome, local и на моем удаленном сервере, но firefox работает только локально, поэтому класс добавляется к объекту, но на моем удаленном сервере нет перехода. Все анимации, которые не используют класс переключения, работают нормально с Firefox, поэтому CSS настроен правильно.

Кто-нибудь имеет представление, почему код не работает в Firefox, на моем удаленном сервере? Фрагмент кода включен перед тегом закрытия тела.

    $(function () { 
    // your code here
    $.expr[':'].inViewPort = function(obj){
    var scrollTop = $(window).scrollTop();
    var viewportHeight = $(window).height();
    var top = $(obj).offset().top;
    var bottom = top + $(obj).height();
    if (top <= scrollTop || bottom <= (scrollTop + viewportHeight / 0.8)) {
        return true;
    } else {
        return false;
    }
};

    });
    $(window).scroll(function (e) {
        $('.inview').each(function(){
            var self = $(this),
                inView = self.is(':inViewPort');
            self.toggleClass('animated', inView);
        });
    });

Код работает следующим образом: добавьте класс "animated" ко всем объектам с классом "inview", если объект находится в области просмотра. Предполагается, что для запуска анимации css3, которая была применена к объекту, например, "fadeInLeft".

Спасибо за любую идею. Также, возможно, кому-то пришла в голову идея запустить анимацию CSS3, если объект находится в области просмотра.

ура знак

1 ответ

Я бы посоветовал немного укротить ручку свитка, посмотрим, имеет ли это какое-то значение:

(function () {
    var timeout;
    $(window).scroll(function (e) {
        clearTimeout(timeout);
        timeout = setTimeout(function () {
            $('.inview').each(function () {
                var self = $(this),
                    inView = self.is(':inViewPort');
                self.toggleClass('animated', inView);
            });
        }, 50);
    });
}());
Другие вопросы по тегам