@thednp/dll
Version:
Double Lazy Load for Images, Videos and Background Images.
83 lines (65 loc) • 3 kB
Markdown
[](https://github.com/thednp/dll/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@thednp/dll)
[](http://npm-stat.com/charts.html?package=@thednp/dll)
[](https://www.jsdelivr.com/package/npm/@thednp/dll)
[](https://www.typescriptlang.org/)
[](https://github.com/vitejs)
Double Lazy Load for videos, images and background images. Sourced with Typescript.
Right [here](http://thednp.github.io/dll). Also provides some tips on how to use.
```
npm install @thednp/dll
```
```js
import DLL from '@thednp/dll';
DLL('selector',callback);
```
* Integrates nicelly into your projects and provides build tools
* Do lazy loading for an element that is subject to lazy load via `data-src`, or
* Do to all child items of a given element
* Do <code>backgroundImage</code> to elements other than <code><img></code> if they have <code>data-src</code> attribute.
* Do callback when load event is triggered for one element, or for the last child element of a given parent.
* Do lazy loading for `<video>` elements having `<source>` with `data-src` attribute
* Do lazy load for all items having <code>data-src</code> attribute.
Any valid selector or no selector.
```js
import DLL from '@thednp/dll';
// lazy loads an element with a given class and it's children if any have data-src
DLL('.uniqueClassName', callBack);
// lazy loads an element with a given ID and it's children if any have data-src
DLL('#uniqueID', callBack);
// lazy loads any items with data-src from the entire page
DLL();
```
If you want to lazy load on scroll, with [isElementInViewport](https://github.com/thednp/shorty/blob/master/src/is/isElementInViewport.ts) you can do:
```js
// your target element
var el = document.getElementById('myItem');
// the callback
function callback(){
//do some stuff when loading finished
}
// the scroll eventHandler
function scrollHandler(){
if ( isElementInViewport(el) ){
DLL(el, callback)
}
window.removeEventListener('scroll', scrollHandler, false);
}
window.addEventListener('scroll', scrollHandler, false);
```
Lazy load a parent `<div id="myElement" data-src="..image.png">` with many elements inside subject to dll.js object:
```js
DLL(document.getElementById('myElement'), callback)
function callback(){
console.log('I just finished lazy loading the last element for #myElement')
}
```
[](https://github.com/thednp/dll/blob/master/LICENSE)