Skip to content

jaegerfe/react-image-gallery

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

184 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
  • 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/src/image-gallery";

CSS

build/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',
        description: 'Optional description...'
        srcSet: 'Optional srcset (responsive images src)'
        size: 'Optional size (image size 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
  • 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
  • slideToIndex(index): slides to a specific index
  • getCurrentIndex(): returns the current index

Notes

  • Feel free to contribute and or provide feedback!

To 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

About

Responsive image gallery, carousel, image slider react component

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 83.4%
  • CSS 15.5%
  • HTML 1.1%