lazzy
Version:
Modern and lightweight lazy loading library
112 lines (81 loc) • 2.8 kB
Markdown
# lazzy
- No dependencies
- No unnecessary requests
- Handles responsive images
- SEO friendly (doesn't remove the `src` attribute)
## Installation
```
npm i lazzy
```
Require as a module:
```js
const lazzy = require('lazzy');
```
In browser:
```html
<script src="dist/lazzy.min.js"></script>
```
## Usage
To use lazzy just add the `.lazzy` class and the following `srcset` to your images:
```html
<img class="lazzy"
src="images/1200.png"
srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
alt="" />
```
To use lazzy with **responsive images**, list your images in the `data-srcset` attribute:
```html
<img class="lazzy"
src="images/1200.png"
data-srcset="images/400.png 400w, images/600.png 600w, images/1000.png 1000w"
srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
alt="" />
```
## Options
### Custom selector
You don't need to init lazzy. But if you want to use a `custom selector`, run the following code:
```js
lazzy.run('.my-lazzy-selector');
```
or specify **multiple selectors**:
```js
lazzy.run(['.my-lazzy-page img', '.my-lazzy-selector']);
```
### Preload images
With Lazzy, you can easily **preload** images by setting the `preload` rule:
```js
lazzy.run({
selector: ['.my-lazzy-page img', '.my-lazzy-selector'],
preload: '100px' // Load images 100px earlier
});
```
or
```js
lazzy.run({
preload: 100 // Load images 100px earlier
});
```
or, set the `preload` as a **percentage** of the current viewport height:
```js
lazzy.run({
preload: '20%' // Load images 20% earlier
});
```
### Retina & 4k support
Request image resolution depending on Pixel density (PPI)
```js
lazzy.run({
pixelDensity: true // false, by default
});
```
## A concept
A lightweight lib that doesn't break your HTML by removing the `src`.
To avoid unnecessary requests lazzy uses a base64-encoded 1x1px image in the `srcset` attribute as a placeholder - `data:image/gif;base64,R0lGOD...`
Note that you can use your own placeholder images. For example, blurred previews when downloading better quality images.
## Browser support
The lazy loading works in browsers supporting the `srcset` attribute, that's about [90%](http://caniuse.com/#feat=srcset).
Unsupported browsers will load the image in the `src` attribute. **That's the image search engines and social networks will find, so it's better to make it high resolution.**
## DOM changes
The library will listen for DOM changes and you can also trigger visible images loading by calling: `lazzy.run()`.
## License
Free to use under the [MIT license](http://opensource.org/licenses/MIT).