
Animatio in applicationibus React est locus popularis et discussus. Ad tertium dicendum quod hoc est quod modi sunt multi modi creandi. Aliqui tincidunt utuntur CSS addendo tags ad HTML classes. Egregia methodus, operae pretium. Sed si vis cum multiplicibus animationum generibus laborare, valet tempus ad discendum GreenSock, popularis et potens suggestum est. Multum etiam sunt bibliothecarum et componentium ad animationes creandas. De illis fama.
Hic articulus quinque modi tractat ad applicationes React animatae:
- CSS;
- ReactTransitionGroup;
- React-animationes;
- React-revelare;
- TweenOne and Ant Design.
Skillbox commendat: Educational online course .
admonemus; omnibus legentibus "Habr" - discount 10 rublorum cum scribendo in quavis Skillbox utens "Habr" codice promotivo.
Omnia exempla in promptu sunt (hinc pro imaginibus, ut in articulo originali, inseruntur articuli).
About Us
Haec ratio in ipso principio agitata est, et vere bona est. Si, pro importandis bibliothecas JavaScript, ea uteris, ecclesia parva est, navigatrum multis opibus non indiget. Quod quidem pertinet ad applicationem perficiendi. Si animatio relative simplex sit, hunc modum considera.
Exemplum, hic menu animata;

Relative simplex est, cum proprietate CSS et trigger sicut className="is-nav-open" in HTML tag.
Haec methodus diversimode adhiberi potest. Exempli causa, fasciam supra navigationem crea et mutationes campi causa. Cum navigationes constantem latitudinem 250px habeat, latitudo vestis cum relin- quentia vel translateX eandem latitudinem debet habere. Si navigationem demonstrare debes, className = "is-nav-aper" ad fasciculum monstrare debes et membranam ad marginem-sinistram movere / translateX: 0;.
Ultimo, principium animationis sic erit:
export default class ExampleCss extends Component {
handleClick() {
const wrapper = document.getElementById('wrapper');
wrapper.classList.toggle('is-nav-open')
}
render() {
return (
<div id="wrapper" className="wrapper">
<div className="nav">
<icon
className="nav__icon"
type="menu-fold"
onClick={() => this.handleClick()}/>
<div className="nav__body">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Beatae ducimus est laudantium libero nam optio repellat
sit unde voluptatum?
</div>
</div>
</div>
);
}
}Atque hic sunt CSS styli;
.wrapper {
display: flex;
width: 100%;
height: 100%;
transition: margin .5s;
margin: 0 0 0 -250px;
}
.wrapper.is-nav-open {
margin-left: 0;
}
.nav {
position: relative;
width: 250px;
height: 20px;
padding: 20px;
border-right: 1px solid #ccc;
}
.nav__icon {
position: absolute;
top: 0;
right: -60px;
padding: 20px;
font-size: 20px;
cursor: pointer;
transition: color .3s;
}
.nav__icon:hover {
color: #5eb2ff;
}Item, si animatio est secundum quid simplex, hic modus est principalis. Users cum velocitate navigandi placebunt.
ReactTransitionGroup
ReactTransitionGroup componentia a ReactJS communitatis quadrigis evoluta est. Eius auxilio facile potes praecipuas animationes et transitus CSS efficere.
ReactTransitionGroup ordinatur ad classes mutandas cum mutationes lifecycli componentis. Parva magnitudine est et indiget ut instituatur in sarcina applicationis React, quod paulum augebit altiorem magnitudinem aedificandi. Praeterea CDN uti potes.
ReactTransitionGroup tria elementa habet, Transitio, CSSTransitio et TransitionGroup. Animationem incipere, elementum in illis involvere debes. Stylus vicissim scribi debet in classibus CSS.
Animatio hic est, et - via ad efficiendum est.

Primus gradus est importare CSSTransitionGroup ex react-transitu-group. Post haec, album involvere debes et proprietatem transitionis Name pone. Quotiescumque puer elementum in CSSTransitionGroup additur vel removetur, suscipit animationis stilos.
<CSSTransitionGroup
transitionName="example">
{items}
</CSSTransitionGroup>Ponendo transitumName = "exemplum" proprietatis, classes styli schedae incipiendum est ab exemplo nominis.
.example-eneter {
opacity: 0.01;
}
.example-enter.example-enter-active {
opacity: 1;
transition: opacity 300ms ease-in;
}
.example-leave {
opacity: 1;
}
.example-leave.example-leave-active {
opacity: 0.01;
transition: opacity 300ms ease-in;Superius exemplum est usus ReactTransitionGroup.
Etiam logice opus est, et duobus modis ad exemplum notorum notorum addendo.
Prima methodus est handleAdd - novos contactos addit, temere nomen accipit, quod deinde locat in state.items ordinata.
Ad contactum per index removendum in state.items ordinata, handleRemove adhibetur.
import React, { Component, Fragment } from 'react';
import { CSSTransitionGroup } from 'react-transition-group'
import random from 'random-name'
import Button from './button'
import Item from './item'
import './style.css';
export default class ReactTransitionGroup extends Component {
constructor(props) {
super(props);
this.state = { items: ['Natividad Steen']};
this.handleAdd = this.handleAdd.bind(this);
}
handleAdd() {
let newItems = this.state.items;
newItems.push(random());
this.setState({ items: newItems });
}
render () {
const items = this.state.items.map((item, i) => (
<Item
item={item}
key={i}
keyDelete={i}
handleRemove={(i) => this.handleRemove(i)}
/>
));
return (
<Fragment>
<Button onClick={this.handleAdd}/>
<div className="project">
<CSSTransitionGroup
transitionName="example"
transitionEnterTimeout={500}
transitionLeaveTimeout={300}
>
{items}
</CSSTransitionGroup>
</div>
</Fragment>
);
}
};React-animationes
bibliotheca quae aedificata est in animate.css. Facile est elaborare et multas diversas animationes habet collectiones. Bibliotheca compatitur cum quavis bibliotheca inlineandi, quae usum obiecti sustinet ad praecipuas animationes tabulas definiendas, incluso Radium, Aphrodite vel Componentes appellati.

Scio quid cogitas;

Nunc perspiciamus quomodo haec opera GRAVIS animationis exemplo utantur.

Imprimis animationem ab animationibus retractationibus importamus.
const Bounce = styled.div`animation: 2s${keyframes`${bounce}`} infinite`;
Deinde, componentes creando, quemlibet codicem HTML vel componentem ad animationem involvimus.
<bounce><h1>Hello Animation Bounce</h1></bounce>exempli gratia:
import React, { Component } from 'react';
import styled, { keyframes } from 'styled-components';
import { bounce } from 'react-animations';
import './style.css';
const Bounce = styled.div`animation: 2s ${keyframes`${bounce}`} infinite`;
export default class ReactAnimations extends Component {
render() {
return (
<Bounce><h1>Hello Animation Bounce</h1></bounce>
);
}
}Omnia opera, animatio est simplex. Magna etiam solutio est pro animatione bouncing utendi - .
React-revelare
Animationes fundamentales sunt inter quas caduca, flipping, scandens, rotata et magis. Permittit ut omnibus animationibus fulcis operari. Potes ergo ponere additional occasus, inter positionem, moram, distantiam, Caesar et alia. Effectus alii CSS adhiberi possunt, inclusa parte servo reddendi et ordinandi compositi. Super, si opus est ad animationem scrolling, haec compage operae pretium est.
import Fade from 'react-reveal/Fade';
<Fade top>
<h1>Title</h1>
</Fade> 
Quinque cunei sunt in summa, uterque in plena pagina et caput habet.
import React, { Component, Fragment } from 'react';
import Fade from 'react-reveal/Fade';
const animateList = [1, 2, 3, 4, 5];
export default class ReactReveal extends Component {
render() {
return (
<Fragment>
{animateList.map((item, key) => (
<div style={styles.block} key={key}>
<Fade top>
<h1 style={styles.title}>{`block ${item}`}</h1>
</Fade>
</div>
))}
</Fragment>
);
}
}
const styles = {
block: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '100%',
height: '100%',
background: '#000',
borderBottom: '1px solid rgba(255,255,255,.2)',
},
title: {
textAlign: 'center',
fontSize: 100,
color: '#fff',
fontFamily: 'Lato, sans-serif',
fontWeight: 100,
},
};Nunc animatum in constantem introducimus. Ordo quinque elementorum continet. Post schedularum methodo adhibito, elementum quodlibet in Fade componi potest, elementis in caput inserendis. Styli qui in stylis definiuntur constantes recipiunt stylos breves CSS pro tam stipitibus quam in capite. Supra quinque cuneos sunt cum Fade animationis.
TweenOne et animatio in Ant Design
- React bibliotheca III, quae magnum numerum utilium ac facilium utentium partium continet. Opportunum est si elegans interfaces creare debes. Alibaba evoluta est, quae bibliotheca in multis eius inceptis utitur.

Exemplum habet multum animatum componentium. Plerique similes animationes habent, itaque exemplum praemissis simplicius erit. Hoc solum globulum, pilam viridem et elementum additum, exempli gratia, quadratum rubeum comprehendet.

Animatio componente TweenOne utitur, quae indiget PathPlugin ad recte motum itineris. Haec omnia operantur solum si pones
PathPlugin in TweenOne.plugins.
TweenOne.plugins.push(PathPlugin);Praecipua animationis parametri sunt haec:
- duration — animation time in ms;
- otium - animation lenitas;
- yoyo - mutato motu ante et retro per iterationem;
- repetere — repetere animationem. Infinitis animationibus uti -1 opus est;
- p — coordinatae semitae ad animationem;
- easePath — coordinatae semitae lenis ad animationem.
Duo postremi parametri valde specificati sunt, sed de illis solliciti non debes, omnia ut decet opera.
const duration = 7000;
const ease = 'easeInOutSine';
const p =
'M123.5,89.5 C148,82.5 239.5,48.5 230,17.5 C220.5,-13.5 127,6 99.5,13.5 C72,21 -9.5,56.5 1.5,84.5 C12.5,112.5 99,96.5 123.5,89.5 Z';
const easePath =
'M0,100 C7.33333333,89 14.3333333,81.6666667 21,78 C25.3601456,75.6019199 29.8706084,72.9026327 33,70 C37.0478723,66.2454406 39.3980801,62.0758689 42.5,57 C48,46.5 61.5,32.5 70,28 C77.5,23.5 81.5,20 86.5,16 C89.8333333,13.3333333 94.3333333,8 100,0';
const loop = {
yoyo: true,
repeat: -1,
duration,
ease,
};Nunc incipere potes creare obiectum animationis.
- redSquare fascias parametri continet in Y coordinare, durationem et moram.
- greenBall iter continet parametri x, y valor ipsius p. Praeterea duratio, iteratio et lenitas functio sunt TweenOne.easing.path, quae duos ambitus habet.
- semita — easePath.
- longitudo Pixel est curva quae in summam 400 sectionum dividitur.
- Vestigium ovale cum axibus est, cycli stylos habet et modulum rotationis habet.
const animate = {
redSquare: {
...loop,
y: 15,
duration: 3000,
delay: 200,
},
greenBall: {
path: { x: p, y: p },
duration: 5000,
repeat: -1,
ease: TweenOne.easing.path(easePath, { lengthPixel: 400 }),
},
track: {
...loop,
rotate: 15,
},
};Etiam opus est ut TweenOne component operam dare. Partes omnes e rc-un-una advehuntur. TwenOna elementum fundamentale est adminicula fundamentalia et animationis, quae animationem repraesentant. Quisque TweenOne habet suas parametros animationis, ut redSquare, semita, greenBall.
import React from 'react';
import TweenOne from 'rc-tween-one';
export default function BannerImage() {
return (
<div className="wrapper-ant-design">
<svg width="482px" height="500px" viewBox="0 0 482 500">
<defs>
<path
d="M151,55 C129.666667,62.6666667 116,74.3333333 110,90 C104,105.666667 103,118.5 107,128.5 L225.5,96 C219.833333,79 209.666667,67 195,60 C180.333333,53 165.666667,51.3333333 151,55 L137,0 L306.5,6.5 L306.5,156 L227,187.5 L61.5,191 C4.5,175 -12.6666667,147.833333 10,109.5 C32.6666667,71.1666667 75,34.6666667 137,0 L151,55 Z"
id="mask"
/>
</defs>
<g stroke="none" strokeWidth="1" fill="none" fillRule="evenodd" transform="translate(0, 30)">
<g id="Group-13" transform="translate(0.000000, 41.000000)">
<TweenOne component="g" animation={animate.redSquare}>
<rect
stroke="#F5222D"
strokeWidth="1.6"
transform="translate(184.000000, 18.000000) rotate(8.000000) translate(-184.000000, -18.000000) "
x="176.8"
y="150.8"
width="14.4"
height="14.4"
rx="3.6"
/>
</TweenOne>
</g>
<g id="Group-14" transform="translate(150.000000, 230.000000)">
<g id="Group-22" transform="translate(62.000000, 7.000000)">
<image
id="cc4"
alt="globe"
xlinkHref="https://gw.alipayobjects.com/zos/rmsportal/FpKOqFadwoFFIZFExjaf.png"
width="151px"
height="234px"
/>
</g>
<mask id="mask-2">
<use xlinkHref="#mask" fill="white" transform="translate(-42, -33)" />
</mask>
<g mask="url(#mask-2)">
<TweenOne component="g" animation={animate.track} style={{ transformOrigin: '122.7px 58px' }}>
<g transform="translate(-16, -52)">
<g transform="translate(16, 52)">
<path
d="M83.1700911,35.9320015 C63.5256194,37.9279025 44.419492,43.1766434 25.8517088,51.6782243 C14.3939956,57.7126276 7.77167019,64.8449292 7.77167019,72.4866248 C7.77167019,94.1920145 61.1993389,111.787709 127.105708,111.787709 C193.012078,111.787709 246.439746,94.1920145 246.439746,72.4866248 C246.439746,55.2822262 212.872939,40.6598106 166.13127,35.3351955"
id="line-s"
stroke="#0D1A26"
strokeWidth="1.35"
strokeLinecap="round"
transform="translate(127.105708, 73.561453) rotate(-16.000000) translate(-127.105708, -73.561453) "
/>
</g>
<TweenOne component="g" animation={animate.greenBall}>
<image
alt="globe"
id="id2"
xlinkHref="https://gw.alipayobjects.com/zos/rmsportal/IauKICnGjGnotJBEyCRK.png"
x="16"
y="62"
width="26px"
height="26px"
/>
</TweenOne>
</g>
</TweenOne>
</g>
</g>
</g>
</svg>
</div>
);
} 
Etiam FORMIDULOSUS spectat, sed animatio hoc modo simplex est.
<TweenOne component="g" animation={animate.redSquare} />
<TweenOne component="g" animation={animate.track} />
<TweenOne component="g" animation={animate.greenBall} />Omnes opus facere est regulas animationis describere et ad TweenOne componentes transferre.
Diversas metas assequendas diversas rationes requirit. In hoc articulo multae solutiones tractatae sunt quae in magno numero inceptorum adhiberi possunt. Est ad te ius eligendi.
Skillbox commendat:
- Duo annorum cursum .
- Online cursum .
- Cursus practicus .
Source: www.habr.com
