Apply a CSS class for each stage of a CSS transition.
This is basically a react-free rip-off of react-transition-group.
It is super useful to make CSS transitions from display: none;
to display: whatever;
.
There is a simple usage demo which can be run as follows:
yarn
yarn start
The basic idea of this library is that in order to control a CSS transition using JavaScript, you have to think of it as a three-staged process:
- Start:
- Set prerequisites for the animation, e.g. set
display: block;
andtransition: all 0.3s ease;
- Set prerequisites for the animation, e.g. set
- Active:
- One
requestAnimationFrame
after start - Change transitioning properties, e.g. set
opacity: 1;
- One
- Done:
- After
transitionend
or a timeout - Make transition changes permanent, this means usually setting the same properties as during active stage
- During
exit
, this would be the place to setdisplay
back tonone
.
- After
For a code example, please take a look at the demo.
- Apply
pointer-events: none;
during.exit
and.exit-active
to prevent user interaction during transition - How to cope with the timeout warning:
- Make sure that a transition is happening on the element specified during instantiation, e.g. it is not a parent element but the direct element on which the transitions are happening. If not, create separate
CSSTransition
instances for each element. - Make sure that there is actually a transition. The instance is waiting for the first
transitionend
event. - Check whether your transition takes less time than the configured timeout which is by default 500ms. If not, increase the timeout.
- Make sure that a transition is happening on the element specified during instantiation, e.g. it is not a parent element but the direct element on which the transitions are happening. If not, create separate
Certain steps need to be done in order to create a new release:
- Decide on a semver version number
- Start a new release using
git flow release start [version number]
- Update the
package.json
version - Run
yarn run release
- Commit changes:
git commit -a -m "Prepare release [version number]"
- Finish release using
git flow release finish
- Push all changes:
git push origin --all && git push origin --tags
See LICENSE