mirror of
https://github.com/zhigang1992/react-content-loader.git
synced 2026-04-24 04:15:55 +08:00
174 lines
6.2 KiB
Markdown
Executable File
174 lines
6.2 KiB
Markdown
Executable File
<p align="center">
|
|
<img width="350
|
|
" alt="react-content-loader" src="https://user-images.githubusercontent.com/4838076/34419335-5669c3f8-ebea-11e7-9668-c47b7846970b.png">
|
|
</p>
|
|
<p align="center">
|
|
<img width="400" alt="Example's react-content-loader" src="https://user-images.githubusercontent.com/4838076/34308760-ec55df82-e735-11e7-843b-2e311fa7b7d0.gif" />
|
|
</p>
|
|
|
|
React component that uses SVG to create a collection of loaders which simulates the structure of the
|
|
content that will be loaded, similar to Facebook cards loaders.
|
|
|
|
[]()
|
|
[]()
|
|
[]()
|
|
[]()
|
|
|
|
## Features
|
|
|
|
* :gear: **Completely customizable:** you can change the colors, speed and sizes;
|
|
* :pencil2: **Create your own loading:** use the
|
|
[create-react-content-loader](https://danilowoz.github.io/create-react-content-loader/) to create
|
|
your custom loadings easily;
|
|
* :ok_hand: **You can use right now:** there are a lot of presets to use the loader, see the
|
|
[options](#options);
|
|
* :rocket: **Performance:** react-content-loader uses pure SVG to work, so it works without any extra scripts,
|
|
canvas, etc;
|
|
|
|
## Usage
|
|
|
|
### Installation
|
|
|
|
Yarn: `$ yarn add react-content-loader`
|
|
|
|
Npm: `$ npm i react-content-loader --save`
|
|
|
|
**You can use it in two ways ([See the options)](#options):**
|
|
|
|
```jsx
|
|
// import the component
|
|
import ContentLoader, { Facebook } from 'react-content-loader'
|
|
|
|
const MyLoader = () => <ContentLoader />
|
|
const MyFacebookLoader = () => <Facebook />
|
|
```
|
|
|
|
**Or in custom mode, using the
|
|
[online tool](https://danilowoz.github.io/create-react-content-loader/)**
|
|
|
|
```jsx
|
|
const MyLoader = () => (
|
|
<ContentLoader>
|
|
{/* Pure SVG */}
|
|
<rect x="0" y="0" rx="5" ry="5" width="70" height="70" />
|
|
<rect x="80" y="17" rx="4" ry="4" width="300" height="13" />
|
|
<rect x="80" y="40" rx="3" ry="3" width="250" height="10" />
|
|
</ContentLoader>
|
|
)
|
|
```
|
|
|
|
## Options
|
|
|
|
| Name | Type | Default | Description |
|
|
| ----------------------- | ----------- | ---------------- | ---------------------------------------------------------- |
|
|
| **animate** | `{Boolean}` | `true` | `false` to render with no animation |
|
|
| **speed** | `{Number}` | `2` | Animation speed in seconds |
|
|
| **className** | `{String}` | `''` | Classname in the `<svg/>` |
|
|
| **width** | `{Number}` | `400` | viewBox width of `<svg/>` |
|
|
| **height** | `{Number}` | `130` | viewBox height of `<svg/>` |
|
|
| **preserveAspectRatio** | `{String}` | `xMidYMid meet` | Aspect ratio option of `<svg/>` |
|
|
| **primaryColor** | `{String}` | `#f3f3f3` | Background |
|
|
| **secondaryColor** | `{String}` | `#ecebeb` | Animation color |
|
|
| **style** | `{Object}` | `null` | Ex: `{ width: '100%', height: '70px' }` |
|
|
| **uniquekey** | `{String}` | random unique id | Use the same value of prop key, that will solve inconsistency on the SSR. |
|
|
|
|
### Examples
|
|
|
|
#### Facebook Style
|
|
|
|
```jsx
|
|
// import the component
|
|
import { Facebook } from 'react-content-loader'
|
|
|
|
const MyFacebookLoader = () => <Facebook />
|
|
```
|
|
|
|

|
|
|
|
#### Instagram Style
|
|
|
|
```jsx
|
|
// import the component
|
|
import { Instagram } from 'react-content-loader'
|
|
|
|
const MyInstagramLoader = () => <Instagram />
|
|
```
|
|
|
|

|
|
|
|
#### Code Style
|
|
|
|
```jsx
|
|
// import the component
|
|
import { Code } from 'react-content-loader'
|
|
|
|
const MyCodeLoader = () => <Code />
|
|
```
|
|
|
|

|
|
|
|
#### List Style
|
|
|
|
```jsx
|
|
// import the component
|
|
import { List } from 'react-content-loader'
|
|
|
|
const MyListLoader = () => <List />
|
|
```
|
|
|
|

|
|
|
|
#### Bullet list Style
|
|
|
|
```jsx
|
|
// import the component
|
|
import { BulletList } from 'react-content-loader'
|
|
|
|
const MyBulletListLoader = () => <BulletList />
|
|
```
|
|
|
|

|
|
|
|
#### Custom Style
|
|
|
|
**For the custom mode, use the
|
|
[online tool](https://danilowoz.github.io/create-react-content-loader/)**
|
|
|
|
```jsx
|
|
const MyLoader = () => (
|
|
<ContentLoader height={140} speed={1} primaryColor={'#333'} secondaryColor={'#999'}>
|
|
{/* Pure SVG */}
|
|
<rect x="0" y="0" rx="5" ry="5" width="70" height="70" />
|
|
<rect x="80" y="17" rx="4" ry="4" width="300" height="13" />
|
|
<rect x="80" y="40" rx="3" ry="3" width="250" height="10" />
|
|
</ContentLoader>
|
|
)
|
|
```
|
|
|
|

|
|
|
|
## Similars
|
|
|
|
* [React Native](https://github.com/virusvn/react-native-svg-animated-linear-gradient);
|
|
* [Preact](https://github.com/bonitasoft/preact-content-loader);
|
|
* Vue.js: [vue-content-loading](https://github.com/LucasLeandro1204/vue-content-loading), [vue-content-loader](https://github.com/egoist/vue-content-loader);
|
|
* [Angular](https://github.com/Gbuomprisco/ngx-content-loading).
|
|
|
|
## Development
|
|
|
|
Fork the repo then clone it
|
|
|
|
`$ git clone git@github.com:YourUsername/react-content-loader.git && cd react-content-loader`
|
|
|
|
Install the dependencies
|
|
|
|
`$ yarn`
|
|
|
|
Run the storybook to see your changes
|
|
|
|
`$ yarn storybook`
|
|
|
|
## License
|
|
|
|
[MIT](https://github.com/danilowoz/react-content-loader/blob/master/LICENSE)
|