Home
Softono

Progressive Image Element

Open source MIT HTML
271
Stars
16
Forks
2
Issues
4
Watchers
3 months
Last Commit

 About Progressive Image Element

⚡️ Progressively enhance image placeholders once they are in the viewport

Platforms

Web Self-hosted

Languages

HTML

Need Help Installing Progressive Image Element?

We provide expert installation service for this software. Our team will install, configure, and secure Progressive Image Element on your server. plans start at just $30.

Progressive Image Element

View on GitHub

<progressive-image> element

Progressively enhance image placeholders once they are in the viewport.

Test npm version npm downloads jsDelivr hits (npm)

  • Faster page load: Images are loaded only as they enter the viewport, using native browser lazy loading with placeholders
  • Visual stability: Prevent layout shifts when loading images
  • Save data option: Load images only on demand
  • No dependencies: Framework agnostic web component
progressive image element markup example

Install

$ npm install progressive-image-element

Usage

  1. Include the script & stylesheet within your application
<!-- Include the stylesheet, this could be direct from the package or CDN -->
<link rel="stylesheet" href="https://unpkg.com/progressive-image-element@latest/dist/progressive-image-element.css" />

<!-- Include the custom element script, this could be direct from the package or CDN -->
<script type="module" src="https://unpkg.com/progressive-image-element@latest/dist/progressive-image-element.js"></script>

or

// Import the custom element script
import ProgressiveImageElement from 'progressive-image-element';
  1. Use the <progressive-image> element markup
<progressive-image
  src="https://raw.githubusercontent.com/andreruffert/progressive-image-element/main/example-image-1x.jpg"
  srcset="example-image-2x.jpg 2x, example-image-1x.jpg 1x"
>
  <!-- Make sure to specify image dimensions -->
  <img src="https://raw.githubusercontent.com/andreruffert/progressive-image-element/main/placeholder-image.jpg" width="300" height="200" alt="Image" />
</progressive-image>

The placeholder image should be a solid color placeholder, LQIP or SQIP that hint at the content of the progressive image before it loads.

Attributes

  • src Specifies the image to display
  • srcset One or more image candidate strings
  • sizes Comma-separated list of source size descriptors
  • savedata Boolean attribute to load the images only after a click/tap on the placeholder image.
    By default enabled for slow connections (slow-2g|2g|3g).

Styling states

A CSS class loadable is present on <progressive-image> when the image is ready to load on user interaction (click). Used for slow connections or when the savedata attribute is present.

progressive-image.loadable { ... }

A CSS class [loading] is present on <progressive-image> while the image is loading.

progressive-image.loading { ... }

A CSS class .loaded is present on <img> children of <progressive-image> when the image was loaded.

progressive-image > img { opacity: 0; }
progressive-image > img.loaded { opacity: 1; }

License

Distributed under the MIT license. See LICENSE for details.

© André Ruffert