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
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, defaulttrue
- infinite sliding
lazyLoad
: Boolean, defaultfalse
showNav
: Boolean, defaulttrue
showThumbnails
: Boolean, defaulttrue
showFullscreenButton
: Boolean, defaulttrue
showPlayButton
: Boolean, defaulttrue
showBullets
: Boolean, defaultfalse
showIndex
: Boolean, defaultfalse
autoPlay
: Boolean, defaultfalse
disableThumbnailScroll
: Boolean, defaultfalse
- disables the thumbnail container from adjusting
slideOnThumbnailHover
: Boolean, defaultfalse
- slides to the currently hovered thumbnail
disableArrowKeys
: Boolean, defaultfalse
defaultImage
: String, defaultundefined
- 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 ifshowIndex
is falseslideInterval
: Integer, default3000
startIndex
: Integer, default0
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> ) }
- As a prop on a specific item
Functions
play()
: continuous plays if image is not hoveredpause()
: pauses the slidesfullScreen()
: activates full screenexitFullScreen()
: deactivates full screenslideToIndex(index)
: slides to a specific indexgetCurrentIndex()
: 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