JSPM

  • Created
  • Published
  • Downloads 289818
  • Score
    100M100P100Q175978F
  • License MIT

React Carousel, React Image gallery, React Slide Show component

Package Exports

  • react-image-gallery
  • react-image-gallery/styles/css/image-gallery.css
  • react-image-gallery/styles/scss/image-gallery.scss

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-image-gallery) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

React Image Gallery

npm version Download Count

demo gif

React image gallery is a React component for building image gallery and carousels

Features of react-image-gallery

  • Mobile friendly
  • Thumbnail navigation
  • Custom slides (video slides)
  • Responsive design

Live Demo (try it on mobile)

Live demo: linxtion.com/demo/react-image-gallery

Getting started

npm install react-image-gallery

SASS

@import "../node_modules/react-image-gallery/styles/scss/image-gallery.scss";

CSS

@import "../node_modules/react-image-gallery/styles/css/image-gallery.css";

Example

Need more example? See example/app.js

import ImageGallery from 'react-image-gallery';

class MyComponent extends React.Component {

  handleImageLoad(event) {
    console.log('Image loaded ', event.target)
  }

  handlePlay() {
    this._imageGallery.play()
  }

  handlePause() {
    this._imageGallery.pause()
  }

  render() {

    const images = [
      {
        original: 'http://lorempixel.com/1000/600/nature/1/',
        thumbnail: 'http://lorempixel.com/250/150/nature/1/',
        originalClass: 'featured-slide',
        thumbnailClass: 'featured-thumb',
        originalAlt: 'original-alt',
        thumbnailAlt: 'thumbnail-alt',
        thumbnailLabel: 'Optional',
        description: 'Optional description...',
        srcSet: 'Optional srcset (responsive images src)',
        sizes: 'Optional sizes (image sizes relative to the breakpoint)'
      },
      {
        original: 'http://lorempixel.com/1000/600/nature/2/',
        thumbnail: 'http://lorempixel.com/250/150/nature/2/'
      },
      {
        original: 'http://lorempixel.com/1000/600/nature/3/',
        thumbnail: 'http://lorempixel.com/250/150/nature/3/'
      }
    ]

    return (
      <div>
        <button onClick={this.handlePlay.bind(this)}>Play</button>
        <button onClick={this.handlePause.bind(this)}>Pause</button>
        <ImageGallery
          ref={i => this._imageGallery = i}
          items={images}
          slideInterval={2000}
          onImageLoad={this.handleImageLoad}/>
      </div>
    );
  }

}

Props

  • items: (required) Array of objects, see example above,
  • infinite: Boolean, default true
    • infinite sliding
  • lazyLoad: Boolean, default false
  • showNav: Boolean, default true
  • showThumbnails: Boolean, default true
  • showFullscreenButton: Boolean, default true
  • showPlayButton: Boolean, default true
  • showBullets: Boolean, default false
  • showIndex: Boolean, default false
  • autoPlay: Boolean, default false
  • disableThumbnailScroll: Boolean, default false
    • disables the thumbnail container from adjusting
  • slideOnThumbnailHover: Boolean, default false
    • slides to the currently hovered thumbnail
  • disableArrowKeys: Boolean, default false
  • defaultImage: String, default undefined
    • an image src pointing to your default image if an image fails to load
    • handles both slide image, and thumbnail image
  • onImageError: Function, callback(event)
    • overrides defaultImage
  • onThumbnailError: Function, callback(event)
    • overrides defaultImage
  • indexSeparator: String, default ' / ', ignored if showIndex is false
  • slideInterval: Integer, default 3000
  • startIndex: Integer, default 0
  • onImageLoad: Function, callback(event)
  • onSlide: Function, callback(currentIndex)
  • onPause: Function, callback(currentIndex)
  • onPlay: Function, callback(currentIndex)
  • onClick: Function, callback(event)
  • renderItem: Function, custom item rendering
    • As a prop on a specific item [{thumbnail: '...', renderItem: '...'}]
    • As a prop passed into ImageGallery to completely override _renderItem, see original below
        _renderItem(item) {
          const onImageError = this.props.onImageError || this._handleImageError
      
          return (
            <div className='image-gallery-image'>
              <img
                  src={item.original}
                  alt={item.originalAlt}
                  srcSet={item.srcSet}
                  sizes={item.sizes}
                  onLoad={this.props.onImageLoad}
                  onError={onImageError.bind(this)}
              />
              {
                item.description &&
                  <span className='image-gallery-description'>
                    {item.description}
                  </span>
              }
            </div>
          )
        }

Functions

  • play(): continuous plays if image is not hovered
  • pause(): pauses the slides
  • fullScreen(): activates full screen
  • exitFullScreen(): deactivates full screen
  • slideToIndex(index): slides to a specific index
  • getCurrentIndex(): returns the current index

Notes

  • Feel free to contribute and or provide feedback!

Build the example locally

git clone https://github.com/xiaolin/react-image-gallery.git
npm install
npm start

Then open localhost:8001 in a browser.

License

MIT