Выполнить скрипт если виден элемент jQuery

301
24 октября 2017, 01:57

Мне нужно выполнять скрипт один раз как только указанный блок будет в видимости экрана... Как это сделать, подскажите, пожалуйста? Желательно примером

Answer 1

Определить видно ли элемент на экране или нет, можно проанализировав положение верхней границы и положение скроллбара окна

При изменение положения скроллбара окна возникает событие $(window).scroll()

Определить впервые показывается элемент или нет, можно при помощи какого-нибудь глобального флага

jQuery(document).ready(function($) { 
  $(window).scroll(function() { 
    var cont = $('.content'); 
    if (!cont.hasClass('visible')) { 
      var wh = $(this).height(); 
      var topOffset = cont.offset().top - $(this).scrollTop(); 
      var visible = (topOffset <= wh) && (topOffset + cont.height() > 0); 
      if (visible) { 
        cont.addClass('visible'); 
        console.log('Visible!!!'); 
      } 
    } 
  }); 
});
.padding { 
  height: 300px; 
} 
 
.content { 
  background-color: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="padding">&nbsp;</div> 
<div class="content">Content</div> 
<div class="padding">&nbsp;</div>

READ ALSO
Jquery append() - как отобразить preloader пока работает append()?

Jquery append() - как отобразить preloader пока работает append()?

Я получаю через ajax данные и вставляю их в div методом append()Можно ли как-то поймать когда процесс вставки завершится? Данных много и получается...

250
Как определить номер глифа в шрифте?

Как определить номер глифа в шрифте?

Скачал шрифт Rubik, чтобы использовать существующие в нём знаки валютИ вот когда начал писать в CSS правила, то понял, что что-то здесь не так

277
Почему не работает order (bootstrapv4)?

Почему не работает order (bootstrapv4)?

Почему не работает order bootstrap и блоки остаются в том же положении в каком были изначально?

266
margin-top ребенка - сдвигает родителя - почему?

margin-top ребенка - сдвигает родителя - почему?

Вставляю блок, и даю ему margin-top: 50px - и он сдвигает родителя body в данном случаеПочему так происходит?

225