GithubHelp home page GithubHelp logo

drawbit / react-content-loader Goto Github PK

View Code? Open in Web Editor NEW

This project forked from danilowoz/react-content-loader

1.0 1.0 0.0 1.5 MB

:white_circle: SVG component to create placeholder loading, like Facebook cards loading.

Home Page: http://danilowoz.com/create-content-loader/

License: MIT License

JavaScript 100.00%

react-content-loader's Introduction

react-content-loader

Example's react-content-loader

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.

Size Dependencies CircleCI Coverage

Features

  • ⚙️ Completely customizable: you can change the colors, speed, sizes and even with RTL content support;
  • ✏️ Create your own loading: use the create-content-loader to create your own custom loadings easily;
  • 👌 You can use right now: there are a lot of presets to use it, see the examples;
  • 🚀 Performance: written using only the SVG API.

Usage

Installation

Yarn: $ yarn add react-content-loader

Npm: $ npm i react-content-loader --save

CDN: from JSDELIVR

You can use it in two ways (See the options):

// import the component
import ContentLoader, { Facebook } from 'react-content-loader'

const MyLoader = () => <ContentLoader />
const MyFacebookLoader = () => <Facebook />

Or in custom mode, using the online tool

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/>
rtl {Boolean} false Right-to-left animation
preserveAspectRatio {String} xMidYMid meet Aspect ratio option of <svg/>
primaryColor {String} #f3f3f3 Background
secondaryColor {String} #ecebeb Animation color
primaryOpacity {Number} 1 Background opacity (0 = transparent, 1 = opaque)
secondaryOpacity {Number} 1 Animation opacity (0 = transparent, 1 = opaque)
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

// import the component
import { Facebook } from 'react-content-loader'

const MyFacebookLoader = () => <Facebook />

Facebook Style

Instagram Style

// import the component
import { Instagram } from 'react-content-loader'

const MyInstagramLoader = () => <Instagram />

Instagram Style

Code Style

// import the component
import { Code } from 'react-content-loader'

const MyCodeLoader = () => <Code />

Code Style

List Style

// import the component
import { List } from 'react-content-loader'

const MyListLoader = () => <List />

List Style

Bullet list Style

// import the component
import { BulletList } from 'react-content-loader'

const MyBulletListLoader = () => <BulletList />

Bullet list Style

Custom Style

For the custom mode, use the online tool

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>
)

Custom

Similars

Development

Fork the repo then clone it

$ git clone [email protected]:YourUsername/react-content-loader.git && cd react-content-loader

Install the dependencies

$ yarn

Run the storybook to see your changes

$ yarn storybook

License

MIT

Known Issues

  • Safari / iOS

    When using rgba as a primaryColor or secondaryColor value, Safari does not respect the alpha channel, meaning that the color will be opaque. To prevent this, instead of using an rgba value for primaryColor/secondaryColor, use the rgb equivalent and move the alpha channel value to the primaryOpacity/secondaryOpacity props.

    {/* Opaque color in Safari and iOS */}
    <ContentLoader 
      primaryColor="rgba(0,0,0,0.06)" 
      secondaryColor="rgba(0,0,0,0.12)">
    
    
    {/* Semi-transparent color in Safari and iOS */}
    <ContentLoader 
      primaryColor="rgb(0,0,0)"
      secondaryColor="rgb(0,0,0)"
      primaryOpacity={0.06}
      secondaryOpacity={0.12}>

react-content-loader's People

Contributors

ajayposhak avatar andarist avatar bahaa96 avatar brunockl avatar danilowoz avatar donroyco avatar egoist avatar enapupe avatar isacjunior avatar lasfin avatar lcustodio avatar m-izadmehr avatar nicmitchell avatar pallymore avatar pthrasher avatar rakeshgunduka avatar ricardomlima avatar samwalshnz avatar smaniotto avatar vieiralucas avatar vitorleonel avatar walkeryr avatar wyze avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.