UNPKG

react-progressive-image-blur

Version:
95 lines (65 loc) 3.41 kB
react-progressive-image-blur (alpha version) ======================= Preview ![Progressive loading example](_docs/example.gif) Requests ![enter image description here](_docs/requests.gif) Load images progressively with blur transitions like [Medium](https://medium.com/) this module can also work with [next](https://github.com/zeit/next.js/) Install -------- `npm install react-progressive-image-blur` or `yarn add react-progressive-image-blur` Features -------- - Blur transition - Load images only when it appears inside view port - Load different resolutions according to the width Issues ------ - Currently the blur performance is not very good, the bigger area you have the slower the blur animation performs, if you can help to improve that, feel free to have a PR - Some codes are still not will designed, written, documented and tested, will continue to improve that as well Credits ------- - [Super Fast Blur](http://www.quasimondo.com/BoxBlurForCanvas/FastBlurDemo.html) : The blur effects are implemented by [Mario KlingemannVerified](https://twitter.com/Quasimondo) 's Super Fast Blur library with a little bit modified. How to use ---------- **Prepare different images for progressive image loading** This module accepts a prop named `resolutions`, it accepts a resolution list for a resolution list, defaults to the following: { 50: '-w50', 200: '-w200', 630: '-w630', 1180: '-o' } the key will be the width, and the correspondent value will be the suffix of the file. For example: when you use this module, you give a `src` prop indicates the original image `https://awesome-website.me/profile.png`, in the initial load, the module will find the smallest resolution as a thumbnail, so in the initial load, the module will request `https://awesome-website.me/profile-w50.png`. And next, according to the current width, lets say you have a style sets it to 300px, which 200 in the provided list is closest to 300px, so the module will request `https://awesome-website/profile-w200.png` and show it. (You can see the request process above) **Using Gulp and gulp-responsive to produce different images** You can see the [gulp-responsive](https://github.com/mahnunchik/gulp-responsive) example in `example` **Using it in your projects** Basic usage import React, {Component} from 'react' import {DeferImg, DeferGlobalSettings} from 'react-progressive-image-blur' // if you don't want to set props every time, // you can call DeferImgGlobalSettings // The settings passed from props will overwrite global settings DeferGlobalSettings({resolution:{10:'-thumb',1180:'-original'}}) export default class MyApp extends Component { constructor(props) { super(props) } render() { return ( <DeferImg src="/profile.png" alt="My profile avatar" /> ) } } **What props will DeferImg accepts** Currently the module only accepts a limited set of custom settings - `src` **(MUST)** the original image source without any suffix - `alt` alternative text for `<img>` tag - `className`class names for the module - `figcaption`If set, will append a `<figcaption>` tag after `<img>` **What settings will DeferGlobalSettings accepts** - `resolutions` to set your own resolution list