sash

ответов0 / помог0

Scroll срабатывает только один раз

1679575893
Здравствуйте. Хочу сделать плагин эфектов при скролле страницы. Пока есть такой вот скрипт

var objForAnim = {
  posts: $(".grid_box"),
  weelEvt: (/Firefox/i.test(navigator.userAgent)) ? 'DOMMouseScroll' : 'mousewheel',
  magicClasses: ['spaceInUp', 'spaceInRight', 'spaceInLeft', 'spaceInDown', 'swap', 'vanishIn', 'perspectiveDownRetourn', 'perspectiveUpRetourn', 'perspectiveLeftRetourn', 'perspectiveRightRetourn', 'slideUpRetourn', 'slideDownRetourn', 'slideLeftRetourn', 'slideRightRetourn'],
  getRandClass: function() {
    var arr = this.magicClasses,
      max = arr.length - 1,
      rand = Math.floor(Math.random() * (max + 1));
    return arr[rand];
  }
}
 
$(window).on(objForAnim.weelEvt, function(e) {
  var evt = e.originalEvent ? e.originalEvent : e,
    delta = evt.detail ? evt.detail * (-40) : evt.wheelDelta;
 
  objForAnim.posts.each(function() {
    var $this = $(this),
      randomClass = objForAnim.getRandClass();
    if (delta < 0) {
      if ($('body, html').scrollTop() + $(window).height() > $this.offset().top) {
        if (!$this.hasClass('magictime')) {
          $this.addClass('magictime ' + randomClass);
          $this.data('magicClass', randomClass);
        }
      }
    } else {
      if ($('body, html').scrollTop() < $this.offset().top) {
        $this.removeClass('magictime ' + $this.data('magicClass')).removeData('magicClass');
      }
    }
  });
});
Проблема в том, что во всех браузерах кроме мозилла это срабатывает только один раз, одному видимому элементу добавился класс с анимацией и всё. В мозилле всё круто, как задумывалось.. Что я не так сделал, подскажите плиз
BANO
ответов14 / помог6
1679576012
«(/Firefox/i.test(navigator.userAgent)) ? 'DOMMouseScroll' : 'mousewheel',» вот это зачем? в jq уже это всё предусмотрено, зачем на велосипеде делать велосипед?
влепить жирный лайк
sash
ответов0 / помог0
1679576089
BANO, на всякий случай
влепить жирный лайк
BANO
ответов14 / помог6
1679576148
sash, ну вот и прилетело тебе это "на всякий случай"
влепить жирный лайк
sash
ответов0 / помог0
1679576191
BANO, не в том тут дело
влепить жирный лайк
BANO
ответов14 / помог6
1679576238
sash, дело тут в том, что нужно использовать свойство для файрфокса вот попробуй убрать проверку и просто поставь mousewheel
влепить жирный лайк
sash
ответов0 / помог0
1679576271
BANO, и то же самое...
влепить жирный лайк
BANO
ответов14 / помог6
1679576422
sash, что-то у меня тоже не получилось но я нашёл плагин, который этот момент упрощает https://plugins.jquery.com/mousewheel а ещё мне кажется, что нужно вешать на документ, а не на окно
влепить жирный лайк
sash
ответов0 / помог0
1679576497
BANO, да, ты прав, кому это нужно с нуля писать.. С ума можно сойти. ЗисПозишн блин Благодарочка
влепить жирный лайк
BANO
ответов14 / помог6
1679576538
sash, всегда пожалуйста)
влепить жирный лайк
sash
ответов0 / помог0
1679576756
Кому нужно, берите. Сделано с помощью плагинов onepage_scroll и textillate
влепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль