react-reveal
Version:
Really simple way to add reveal on scroll animation to your React app.
71 lines (56 loc) • 1.53 kB
JavaScript
/*
* Jello React Component
*
* Copyright © Roman Nosov 2017
* Original CSS Effect - Copyright (c) 2016 Daniel Eden
*
* This source code is licensed under the MIT license found in the
* LICENSE.txt file in the root directory of this source tree.
*/
import { bool, number } from 'prop-types';
import wrap from '../lib/wrap';
import { animation, defaults } from '../lib/globals';
const
propTypes = {
duration: number,
timeout: number,
delay: number,
count: number,
forever: bool,
};
const rule = `
from, 11.1%, to {
transform: none;
}
22.2% {
transform: skewX(-12.5deg) skewY(-12.5deg);
}
33.3% {
transform: skewX(6.25deg) skewY(6.25deg);
}
44.4% {
transform: skewX(-3.125deg) skewY(-3.125deg);
}
55.5% {
transform: skewX(1.5625deg) skewY(1.5625deg);
}
66.6% {
transform: skewX(-0.78125deg) skewY(-0.78125deg);
}
77.7% {
transform: skewX(0.390625deg) skewY(0.390625deg);
}
88.8% {
transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
}
`;
let name = false;
function make() {
return name || (name = animation(rule));
}
function Jello({ children, out, timeout, duration = defaults.duration, delay = defaults.delay, count = defaults.count, forever, ...props } = defaults) {
const effect = { make, duration: timeout === undefined ? duration : timeout, delay, forever, count, style: { animationFillMode: 'both', } };
return wrap(props, effect, false, children, true);
}
Jello.propTypes = propTypes;
export default Jello;