Home
Softono
a

andreruffert

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by andreruffert

progressive-image-element
Open Source

progressive-image-element

# &lt;progressive-image&gt; element > Progressively enhance image placeholders once they are in the viewport. [![Test](https://img.shields.io/github/actions/workflow/status/andreruffert/syntax-highlight-element/test.yml?label=Test&logo=github&color=ffc300&labelColor=212121)](https://github.com/andreruffert/progressive-image-element/actions/workflows/test.yml) [![npm version](https://img.shields.io/npm/v/progressive-image-element.svg?color=ffc300&labelColor=212121)](https://www.npmjs.com/package/progressive-image-element) [![npm downloads](https://img.shields.io/npm/dm/progressive-image-element?logo=npm&color=ffc300&labelColor=212121)](https://www.npmjs.com/package/progressive-image-element) [![jsDelivr hits (npm)](https://img.shields.io/jsdelivr/npm/hm/progressive-image-element?color=ffc300&labelColor=212121)](https://www.jsdelivr.com/package/npm/progressive-image-element) * **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 <div align="center"> <img src="example-2x.png" alt="progressive image element markup example" width="774"> </div> ## Install ```console $ npm install progressive-image-element ``` ## Usage 1. Include the script & stylesheet within your application ```html <!-- 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 ```js // Import the custom element script import ProgressiveImageElement from 'progressive-image-element'; ``` 2. Use the `<progressive-image>` element markup ```html <progressive-image src="example-image-1x.jpg" srcset="example-image-2x.jpg 2x, example-image-1x.jpg 1x" > <!-- Make sure to specify image dimensions --> <img src="placeholder-image.jpg" width="300" height="200" alt="Image" /> </progressive-image> ``` The placeholder image should be a solid color placeholder, [LQIP](http://www.guypo.com/introducing-lqip-low-quality-image-placeholders) or [SQIP](https://github.com/technopagan/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](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/srcset) - `sizes` Comma-separated list of [source size descriptors](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/sizes) - `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. ```css progressive-image.loadable { ... } ``` A CSS class `[loading]` is present on `<progressive-image>` while the image is loading. ```css progressive-image.loading { ... } ``` A CSS class `.loaded` is present on `<img>` children of `<progressive-image>` when the image was loaded. ```css progressive-image > img { opacity: 0; } progressive-image > img.loaded { opacity: 1; } ``` ## License Distributed under the MIT license. See LICENSE for details. © [André Ruffert](https://andreruffert.com)

Web Components & Widgets
271 Github Stars
range-slider-element
Open Source

range-slider-element

# &lt;range-slider&gt; element > A cross browser customizable and accessible &lt;range-slider&gt; web component. [![Test status](https://img.shields.io/github/actions/workflow/status/andreruffert/range-slider-element/test.yml?label=Test&logo=github&color=4a46e0&labelColor=212121)](https://github.com/andreruffert/range-slider-element/actions/workflows/test.yml) [![npm version](https://img.shields.io/npm/v/range-slider-element?color=4a46e0&labelColor=212121)](https://npmx.dev/package/range-slider-element) [![gzip size](https://img.shields.io/badge/gzip-2.5kB-4a46e0?labelColor=212121)](https://pkg-size.dev/range-slider-element) [![npm downloads](https://img.shields.io/npm/dm/range-slider-element?logo=npm&color=4a46e0&labelColor=212121)](https://npmx.dev/package/range-slider-element) [![jsDelivr hits (npm)](https://img.shields.io/jsdelivr/npm/hm/range-slider-element?color=4a46e0&labelColor=212121)](https://www.jsdelivr.com/package/npm/range-slider-element) ## Features * Framework agnostic [web component](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) (no dependencies) * Cross browser customizable styling * Single and multi thumb * Horizontal and vertical orientations * Works like a built-in HTML form element (uses [ElementInternals](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals)) * Keyboard accessible (use arrow keys) * Touch friendly * Follows the [ARIA best practices guide on sliders](https://www.w3.org/WAI/ARIA/apg/patterns/slider) ## Install Install via npm ```shell npm install range-slider-element ``` ## Usage ### JavaScript Import as ES module ```js import 'range-slider-element'; ``` Or via CDN ```html <script type="module" src="https://cdn.jsdelivr.net/npm/range-slider-element@2/+esm"></script> ``` ### HTML ```html <range-slider min="0" max="100" step="1" value="50"></range-slider> ``` ### CSS Make sure to load the base styles exported via `range-slider-element/style.css`. Or via CDN ```html <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/range-slider-element@2/dist/range-slider-element.css"> ``` ## Attributes * `min` The minimum permitted value. The default is `0`. * `max` The maximum permitted value. The default is `100`. * `step` The stepping interval. The default is `1`. * `value` The value. The default is `min + (max - min) / 2`. * [`dir`][dir] Directionality. The default is ltr. Allowed options `rtl`. * `orientation` The default is horizontal. Allowed options `vertical`. [dir]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir ## Styling **CSS custom properties** Exposed CSS custom properties scoped within the `range-slider` element. * `--track-size` - The track size. The default is `0.2rem`. Can be overwritten for customization. * `--thumb-size` - The thumb size. The default is `1.2rem`. Can be overwritten for customization. **DOM selectors** ```css range-slider {} range-slider [data-track] {} range-slider [data-track-fill] {} range-slider [data-thumb] {} /* Advanced customization */ range-slider [data-runnable-track] {} ``` For examples of how to customize the default styling, check out the [docs][docs]. [docs]: https://andreruffert.github.io/range-slider-element ## Events * `input` - Pointer move, value changed. Bubbles. * `change` - Pointer up, key up, value changed. Bubbles. ## Examples For examples checkout the [CodePen &lt;range-slider&gt; collection](https://codepen.io/collection/XPJJbq). ## License Distributed under the MIT license. See LICENSE for details. © [André Ruffert](https://andreruffert.com)

JavaScript Libraries & Components Web Components & Widgets
92 Github Stars