React Compare Component
React component to compare two components side-by-side using the slider (responsive, without css width or clip)
It can be used to compare before-after images, compression quality and any other elements (video, text)
Demo
Website
For more examples: storybook WIP
Features
- Any components to compare (images, video (native or youtube) or even plain text)
exampleWIP - Doesn't use
width
orclip
- Responsive (native, without JS listeners)
exampleWIP - Dependencies free
- Custom slider component
exampleWIP - Full control programmatically
- Default slider position
exampleWIP - Set custom slider position from a script
exampleWIP - Callback for all actions (
onDragStart
,onDragEnd
,onPositionChange
(also you can prevent this action))exampleWIP
- Default slider position
- Web accessibility
moreWIP - Native animations
exampleWIP,moreWIP - Four different behaviors (move, click, drag, static)
exampleWIP,moreWIP - Mobile friendly
moreWIP Well tested with 100% coverageWIPCode quality by tslint and eslintWIP- Strong typed by
TypeScript
Docs
<Compare
left={<img src="path/to/image.jpg" style={{display: 'block', width: '100%'}} />}
right={<img src="path/to/image.jpg" style={{display: 'block', width: '100%'}} />}
slider={<div style={{backgroundColor: 'white', width: '3px', height: '100%'}}>}
label="Compare Images"
/>
Compare
Name | Required | Type | Default | Description |
---|---|---|---|---|
left | yes | React.ComponentType | React.ReactElement | - | |
right | yes | React.ComponentType | React.ReactElement | - | |
slider | no | React.ComponentType | React.ReactElement | undefined | |
label | yes | string | - | |
behavior | no | Behavior | Behavior.Move | |
defaultPosition | no | number | 50 | |
animation | no | AnimationType | undefined | |
onDragStart | no | OnDragStartCallbackType | undefined | |
onDragEnd | no | OnDragEndCallbackType | undefined | |
onPositionChange | no | OnPositionChangeCallbackType | undefined | |
tabIndex | no | number | 0 | |
sliderMode | no | SliderMode | SliderMode.Normal | |
clickDragMode | no | ClickDragMode | ClickDragMode.Global | |
alwaysCover | no | boolean | false | |
keyboardStep | no | number | 5 |
For other types check the ~~website WIP~~ WIP
Create Component WIP
WIP
Create Slider WIP
WIP
Component Behaviors WIP
WIP
Web accessibility WIP
WIP
Native Animation WIP
WIP
Mobile WIP
WIP
Compare Component
This package is a part of compare-component which is also available for other libraries:
- React
VueWIPAngularWIPPolymerWIPAngularJSWIPjQueryWIPVanillaJS (no libraries)WIPEmberWIPMithrilWIP
License
MIT