snooze-squad

A ridiculously simple lazy image loader, written in ES6. Time for a nap I think...

Usage no npm install needed!

<script type="module">
  import snoozeSquad from 'https://cdn.skypack.dev/snooze-squad';
</script>

README

SnoozeSquad

Finally a simple lazy image loader (for browsers, not Node.JS!). Written in ES6.

npm version badge npm

Downloading

Download SnoozeSquad from this repo. Links:

Makefile curl command
SnoozeSquad.js curl -OL https://github.com/sbrl/SnoozeSquad/raw/master/SnoozeSquad.js
SnoozeSquad.min.js curl -OL https://github.com/sbrl/SnoozeSquad/raw/master/SnoozeSquad.min.js

npm

Snooze Squad is on npm! You can find it under the name snooze-squad, and install it with npm install snooze-squad.

Usage

Using Snooze Squad is really easy. Here's a simple example:

window.snoozeSquad = new SnoozeSquad({});

The first parameter in the above is the options object. You can specify a number of options that are listed below if you want to. Note that the options object is currently required, and SnoozeSquad won't work without it.

Once you've got that set up, change the name of the src attribute of all images that you want to be lazy loaded to data-src. The contents of data-src will be copied over to the src attribute when the image is woken up. Example:

<!-- From this -->
<img src="/path/to/some/image.js" />

<!-- To this -->
<img data-src="/path/to/some/image.js" />

Note that no other attributes will be touched, so you can safely do whatever else you want to your images.

If for some reason the data-src attribute is unsuitable, you change change it with the attributeName parameter (see below).

Snooze Squad should also properly detect which images are currently in the viewport, and load them automatically.

You can also set the src attribute of your lazily-loaded images to a placeholder or other loading image / animation - Snooze Squad will overwrite this with the actual address of the image when the image is lazily loaded.

Options

You can pass Snooze Squad a number of options. Below is an explanation of each:

  • range - The number of screens within the current screen an image is allowed to get before it is woken up.
  • attributeName - The name of the attribute that we should copy over to wake image up.
  • updateInterval - The maximum interval at which we should update. Helps to prevent lag.

Development

Snooze Squad development isn't too complicated either. You'll need [Node.js] and make installed if you want to build / minify Snooze Squad.

Note that if you submit pull requests, it would be helpful if you didn't minify the file yourself if there's alreayd a pull request waiting. That just gets messy.

Setup

If you're on linux, just run make setup in the current directory. If not (or you're on a machine without sudo - how odd!), just run npm install uglify-js-harmony --global instead.

Minification

Just run make in the current directory.

License

Snooze Squad is licensed under the MIT license. See the LICENSE file in this repository.