serovpochta
@serovpochta
Лысый

Остановка gif анимации, когда gif находится вне поля зрения?

Есть в природе скрипт такого рода, но я не замечу что он работает. Хз не пойму. Мой сайт на Вордпресс
Что делается не так?

$(window).on('load', function () {
  
  var windowHeight = $(window).height();
  var windowScroll = $(window).scrollTop();  
  var offset;
  var src;
  
  //перебираем все img на странице
  $('img').each(function(){
    
    offset = $(this).offset()['top'];
    
    //Если отступ img от верха больше, чем прокурутка страницы + высота     экрана,
    //то добавляем к scr stopped и класс stopped
    if(offset > (windowHeight + windowScroll)){
      src = $(this).attr('src');
      $(this).attr('src', src.replace('.gif', '_stopped.gif'));
      $(this).addClass('stopped');
    }

  });

 // При прокрутке проверяем, если элемент попал в зону видимости, то удаляем
 // у src часть stopped, тем самым заменяя его на оригинальный и удаляем класс
  $(window).on('scroll', function () {
    
    $('img').each(function(){
    
      offset = $(this).offset()['top'];
    
      if(offset > (windowHeight + windowScroll)){
        if($(this).hasClass('stopped')){
          $(this).removeClass('stopped')
          src = $(this).attr('src');
          $(this).attr('src', src.replace('_stopped.gif', '.gif'));
        }
      }

    });
    
  });
  
});


Может есть что-то еще у кого? Какие-то варианты
Спасибо!
  • Вопрос задан
  • 458 просмотров
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
В вашем примере ка-бы все ок, и все должно работать, но видимо где-то синтаксис. Не закрыто и т.д. У вас там each не работает точно, а точнее
$(window).on('scroll'
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Есть вот такая штука!
С помощью неё - реальнее всего сделать.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы