Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Lazyload на чистом JS (https://javascript.ru/forum/misc/67637-lazyload-na-chistom-js.html)

NO_ONE 28.02.2017 16:14

Lazyload на чистом JS
 
Привет.
Возникла потребность написать на чистом JS функцию lazyload для img/iframe/etc.

Нашёл хороший готовый вариант, который возвращает true/false, если искомый элемент попал во viewport:

function isInViewport(el) {
    var coords = el.getBoundingClientRect();
    return ((coords.top >= 0 && coords.left >= 0 && coords.top) <= (window.innerHeight || d.documentElement.clientHeight));
  }

  var img = document.getElementById("img");
  window.onscroll = function() {
   if(isInViewport(img)) doSomething();
  }


Окей, а как прикрутить такую функцию для множества элементов? Например, у меня имеется полученная через querySelectorAll переменная images, содержащая несколько картинок.

Если я использую forEach, то каждый раз вешать на window события? Мне кажется, это неправильно.

Объясните, пожалуйста, как такое реализовать.

рони 28.02.2017 17:34

NO_ONE,
заменить строку 8 на forEach а проверять условие внутри forEach

NO_ONE 28.02.2017 21:43

рони,
спасибо! :)


Часовой пояс GMT +3, время: 17:07.