
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
react-slide-deck
Advanced tools
A simple react component for swipe, tabs, carousel, one page scroll ..., with animation hooks. tweening, tween callbacks. works on PC and touch devices
###NOTICES:
swipe
prop to Deck
only enable|disable swipe functionality, not including wheel control, which requires a seperated wheel
propnpm i react-slide-deck --save
also open on touch device, see the swipe effect
npm install
bower install
gulp dev
// then open localhost:3003
gulp build
import React, { Component } from 'react';
import Deck from 'react-slide-deck';
import styles from './styles'; // your styles, css modules maybe?
class Demo extends Component {
constructor(props) {
super(props);
this.state = {current: 0, horizontal: true, swipe: true, factor: 0.3, loop: true};
}
change(event) {
let target = event.target;
let index = Array.prototype.indexOf.call(target.parentElement.children, target);
this.setState({
current: index
});
}
onSwitchStarted({prev: current, current: next}) {
console.log(`started to switch from ${current} to ${next}`);
}
onSwitching(progress, deck) {
console.log(`switching on progress.`);
console.log(progress, deck.state.distance);
}
onSwitchDone({prev, current}) {
console.log(`switch finished, current slide index: ${current}`);
}
render() {
const slideClasses = {
current: styles.currentSlide, // will be concat to className for current slide when it finished entering
entering: styles.currentSlideEntering, // will be concat to className for current slide during its entering
prev: styles.prevSlide, // ...
leaving: styles.prevSlideLeaving, //...
before: styles.before, //
after: styles.after //
};
return (
<div>
<Deck {...this.state} onSwitching={::this.onSwitching} onSwitchDone={::this.onSwitchDone} slideClasses={slideClasses}>
<Deck.Slide className='bg-black'>
1
</Deck.Slide>
<Deck.Slide className='bg-green'>
2
</Deck.Slide>
<Deck.Slide className='bg-red'>
3
</Deck.Slide>
<Deck.Slide className='bg-yellow'>
4
</Deck.Slide>
</Deck>
<ul className='indicators' onClick={::this.change}>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
);
}
}
<Deck
className // you may need to set you deck's width, height,...
current // current slide index
horizontal // boolean, direction for the slides. `vertical` is removed
wheel // can be control by wheel or not
swipe // can swipe or not for touch devices
animate // boolean, should apply animation for indicator click switch or not, see demo link
factor // swipe distance used to determine whether to swipe forward or abort on touch devices.
// if (swipeDistance / width(or height for vertical)) > factor, then will switch to next slide, otherwise return to the current slide.
loop // scroll down on the last Deck.Slide => transition to the first Deck.Slide.(first => last as well). only work when `swipe` is set
dura // duration for slide transition, optional. default is 1400ms
easing // `function|string` tweening easing function for transition between slides. see detail below,
onSwitching // function(progress, deck) /*fired on every tweening transition. `deck` is the component instance of Deck, useful for accessing data like deck.status, deck.state.distance ...*/
onSwitchDone // function({prev, current}) /*fired when slide transition is finished*/
onSwitchStarted // function({prev:current, current:next}) /*fired before a tween transition started*/
slideClasses // optional, Object, { current, prev, entering, leaving, before, after },
// useful css class hook for Slide animation
// current: applied to the `className` of current Slide when it entered
// entering: applied to the `className` of current Slide if it is entering
// prev: applied to the `className` of previous Slide when it left
// leaving: applied to the `className` of previous Slide when it is leaving
// before: applied to the `className` for Slides whose index < the index of current Slide
// after: applied to the `className` for Slides whose index > the index of current Slide
>
<Deck.Slide> content </Deck.Slide>
<Deck.Slide> content2 </Deck.Slide>
</Deck>
easing
:
function(currentTime/duration)
a function used to do the tweening easing effect, take one argumentstring
, name of built in easing function. see src/ease.js
for detailsit doesn't provide the slide indicators(usually for slides navigation), because it's hard to meet all needs.
if you need slide indicators, do what you want, just provide the current
slide index to <Deck current={current}>
, it will take care of the transition
FAQs
react slide deck, carousel, page scroll, swipe
We found that react-slide-deck demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.