Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
Animation in ReactJs app is a popular topic and there are many ways to create different types of animations.Many developers create animation exclusively using css and adding classes to HTML tags. This is a great way and you should use it. If you want to create complex animations you can pay attention to GreenSock. GreenSock is the most powerful animation platform. There are also a lot of libraries, components for creating animation in React. Letâs talk about them đ
- CSS method
- React-transition-groupâââIt is an add-on component for a simple implementation of basic CSS animations and transitions.
- react-animationsâââReact-animations implements all animations from animate.css. Simple to use!
- React RevealâââThis is an animation framework for React.
- TweenOneâââlibrary that ant.design uses for animation
âŠâŠâŠâŠâŠâŠâŠâŠ.âŠđTo view the repo, click here. đ âŠâŠâŠâŠâŠâŠâŠâŠâŠđ
Of course the open source has much more animation libraries and components. I would like to explore it. But this article will not contain the libraries. You will also receive a bonus at the end of the article in the form of libraries which deserve your attention.
đšâđ» Letâs get started.
1. CSSÂ method
This method is one of the best for a simple animation. When you use it instead of importing javascript libraries, your bundle remains small. And browser spends fewer resources. These two points also largely impact app productivity. If you have a simple animation and worry about the size of your bundle pay attention to this method.
I would like to show you how to do the animation using css. Letâs look at the hamburger menu example:đ
This menu is easy-to-use with css property and trigger className="is-nav-open" for html tag. There are a lot of ways of implementing this example. One of them is to create a wrapper above navigation and to trigger changes in margin. The navigation has constant width equal 250px. And the wrapper with margin-left or translateX property with the same width. When we need to show the navigation we have to add className="is-nav-open" for the wrapper and move the wrapper on margin-left/translateX: 0;
And css styles:
Believe me, itâs necessary to use this method in most situations. We are better off writing several css lines and triggering the className than importing big libraries and implementing it in your projects. The users will be grateful to you that your browser reproduces app quickly.
But sometimes, you have to use other methods. What other ways exist?Letâs have a look at next method.
2. ReactTransitionGroup
This add-on component has been developed by guys from ReactJs community. ReactTransitionGroup is easy to implement basic CSS animations and transitions.
Developers describe this library as:
âA set of components for managing component states (including mounting and unmounting) over time, specifically designed with animation in mind.â
Anyway, three things you need to know about it add-on component:
- React Transition Group changes the classes when component lifecycle changes. In turn, animated style should be described in CSSÂ classes.
- ReactTransitionGroup has small size. It should be installed in package for React application and wonât significantly increase your bundle. But you can use CDN.
- ReactTransitionGroup has 3 components (Transition, CSSTransition and TransitionGroup). In order to get animation you need to wrap component in them.
Letâs take a look how to make a similar animation đđ
First you need to import CSSTransitionGroup from react-transition-group. After that you have to wrap the list in it and set transitionName props. Whenever the child in CSSTransitionGroup is added or deleted it will get the animation styles.
If you set transitionName="example" props, the classes in the style sheets should start with an example name.
You can see the basic usage ReactTransitionGroup version. đ
And this is everything you need. Of Course you need to add some logic.We should describe two methods to the realization of our example contact list:
handleAddâââadding new contacts, it gets a random name and push it to array state.items. (it uses random-name package for random name)
handleRemoveâââremoving contact by index in the state.items array.
3ïž. React-animations
React-animationsâââthe library is built on all animations with animate.css. It is easy to use and has a lot of animation collections. React-animation works with any inline style library that supports the use of objects to define keyframe animations, such as Radium, Aphrodite or styled-components. I prefer to use the styled-components.
You can see some animations on gif:Â đđ
I know what you think đ
As soon as youâve seen these animations youâve realized where you could use them. Letâs take a look at how this works. For exampleâââBounce animation.
The first thing you need in to import chosen animation from react-animations.
As I mentioned earlier I use the styled-component after creating wrapped component with animation style and basic keyframes.
When the component is created you need to wrap up any HTML or the component for animation.
Example:
The animation works. This animation is basic and so easy.
There is some good solution for using this animation on scrollâââreact-animate-on-scroll.
4ïž. React-reveal
React Reveal is an animation framework for React. It has basic animations such as fade, flip, zoom, rotate and a lot of more advanced animations. It allows you to control all animations with props, for example: the position, delay, distance, cascade and many others. You can see them here. You can also use the custom css effects. Also it has server side rendering and high order components. If you prefer to use animation on scroll this framework for you. Check out how it works.
Letâs look at this animation for scroll effects.đđ
We have 5 blocks, each of which have a full-screen page and a title inside.
We create animateList constant. This array contains 5 elements. After using the array method map you can render each element in Fade components and inserts our items to the title. The Const styles have short css styles for our block and the title. Weâve got 5 blocks with Fade animation from the top.
5ïž. TweenOne and animation in Ant Design.
Ant Design is a React UI library that is a plethora of easy to use components. It is useful component for building the elegant user interfaces. Ant Design created by Chinese conglomerate Alibaba and it has used by a lot of well known names: Alibaba (of course), Tencent, Baidu, and many others.
Youâve probably heard about Ant design so letâs consider its animation on their landing page.đ
As you can see there are a lot of animated elements. Iâd like to show you a short version, because all elements have a similar animation. I chose the globe with a green ball and one element, for example a red square, on the background. Our animation would look like this.
Iâve used the TweenOne component in this animation but it needs the PathPlugin for using the path in animation. It will work when you push the PathPlugin to TweenOne.plugins.
The next step letâs describe the Basic animation parameters:
- duration - time animation in ms,
- easeâââanimation ease,
- yoyo âalternating forward and backward with each repetition.
- repeatââârepeat animation. You have to use -1 for an indefinite process.
- pâââthe path coordinates for animation
- easePathâââthe ease path coordinates for animation
You donât need to worry about last two parameters are more specific for this svg.
Next weâll create an animation object. This object has 3 types of animation:
- redSquareâââit has loop params, which we described below, and Y coordinate, duration, and delay.
- greenBallâââit has the path with object params x, y is value p. Duration, repeat and easeâââTweenOne.easing.pathâââfunction with two params:
- pathâââthe easePath coordinate.
- lengthPixelâââthe divided curve into 400 sections.
- trackâââan oval with the axis that has the loop styles and the rotate param.
You donât need to worry about this code. You have to pay attention to TweenOne component. Let us remind briefly, these components will be imported from rc-tween-one. Itâs used as basic components with base props and animation props. It is our animation! Every TweenOne has itâs own animation rules as redSquare, track, greenBall.
đ It looks scaring. But in fact, you need to pay attention to these lines.
As you noticed, creating the animation with this method is a simple way. All you need is to describe the animation rules and to transfer them to TweenOne component.
đ Conclusion
There are a lot of ways using animation. All of them require different approaches. Today we have reviewed some decisions that you can use in your projects. Choose the method which suits you đšâđ»
đ Your site before reading this article:
đ€Ș Your site after reading this article:
đ So use animations wisely!
Thank you for reading đ
Below you can see the bonus with a list of popular libraries for animation.
ReactJs libraries:
- react-motionâââA spring that solves your animation problems.
- react-springâââA spring physics based React animation library.
- ant-motionâââAnimate specification and components of Ant Design.
- react-moveâââBeautiful, data-driven animations for React.
- react-flightâââThe best way to build animation compositions for React.
- react-flip-moveâââEffortless animation between DOM changes (eg. list reordering) using the FLIP technique.
- react-burger-menuâââAn off-canvas sidebar component with a collection of effects and styles using CSS transitions and SVG path animations.
- animatedâââDeclarative Animations Library for React and React Native
- react-tween-stateâââReact animation.
- react-animationsâââA collection of animations for inline style libraries
Javascript libraries:
- GSAPâââUltra high-performance, professional-grade animation for the modern web
- Anime.jsâââAnime.js (/ËĂŠn.É.meÉȘ/) is a lightweight JavaScript animation library with a simple, yet powerful API.It works with CSS properties, SVG, DOM attributes and JavaScript Objects.
- PopmotionâââSimple animation libraries for delightful user interfaces.
- vivusâââJavaScript library to make drawing animation on SVG.
- svg.jsâââThe lightweight library for manipulating and animating SVG.
- velocityâââVelocity is an animation engine with the same API as jQueryâs $.animate().
- wowâââReveal Animations When You Scroll. Very Animate.css Friend.
- dynamic.jsâââJavascript library to create physics-based animations.
- granim.jsâââCreate fluid and interactive gradient animations with this small javascript library.
- kute.jsâââKUTE.js is a native JavaScript animation engine featuring great code quality, badass performance
- TweenJsâââA simple but powerful tweening / animation library for Javascript. Part of the CreateJS suite of libraries.
- moveToâââA lightweight scroll animation javascript library without any dependency
5 Ways to animate a React app in 2019. was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.