react-preload-image
Version:
Preload and fade in an image. Optional support for lazy loading.
88 lines (63 loc) • 2.64 kB
Markdown
# ⚡ React Preload Image
Preload and fade in an image from a background color or placeholder image.
Optional support for lazy loading so images load when scrolled into view. Uses the [Intersection Observer API](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) and falls back to simply preloading when there isn't browser support (cough, IE, cough).
[View the demo on CodePen](https://codepen.io/stothelios/full/gzoZLZ/)
## Usage
Install with `yarn add react-preload-image` or `npm install react-preload-image`
Import in your components with `import PreloadImage from 'react-preload-image'`
### Component styles
These can be applied using a class or inline (examples of each method below).
- **Required:** Relative, absolute, or fixed position
- **Required:** Width & height (explicitly or via top/right/bottom/left)
- **Optional:** Background color or placeholder image (what will be shown before the image loads)
### Component props
| Prop | Type | Required | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
| src | String | Yes | | The image source |
| lazy | Boolean | No | | Enables lazy loading |
| duration | String | No | `300ms` | Duration of the fade-in transition |
| ease | String | No | `cubic-bezier(0.215, 0.61, 0.355, 1)` | Ease of the fade-in transition |
| innerStyle | Object | No | | Specify the CSS values for `backgroundSize`, `backgroundPosition`, and `backgroundRepeat` |
## Examples
Styles can be applied using a class:
```css
.someClass {
position: relative;
width: 100%;
height: 200px;
background-color: #222222;
}
```
```jsx
<PreloadImage
className="someClass"
src="https://upload.wikimedia.org/wikipedia/commons/a/a5/Ailurus_fulgens_-_Syracuse_Zoo.jpg"
lazy
/>
```
Or inline:
```jsx
<PreloadImage
style={{
position: 'absolute',
top: 0,
right: 0,
bottom: 0,
left: 0,
backgroundColor: '#222222'
}}
src="https://upload.wikimedia.org/wikipedia/commons/a/a5/Ailurus_fulgens_-_Syracuse_Zoo.jpg"
/>
```
## Credits
Built using [NWB](https://github.com/insin/nwb/blob/master/docs/guides/ReactComponents.md#developing-react-components-and-libraries-with-nwb)
## Contributing
To test using the included demo app:
1. Clone the repo
2. Open the directory and run `npm install` and `npm start`
3. The demo app will update to reflect any changes to it or the component
To test in your own local app:
1. Clone the repo
2. Open the directory and run `npm install` and `npm link`
3. Open a directory with a test project and run `npm link [package name]`
4. Back in the react-preload-image directory run `npm run build`