-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
60 lines (56 loc) · 1.5 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Hint: https://github.com/rofrischmann/fela/tree/master/packages/fela-plugin-embedded
import React from 'react';
import { createComponent } from 'cf-style-container';
import {
sun,
sky,
ground,
cloudWrapper,
cloud,
cloud2,
cloud3,
moonWrapper,
moon,
moon2,
animatesun,
animatesky,
animateground,
animatecloud,
animatemoon
} from './styles.css';
export default class Animation extends React.Component {
constructor(props) {
super(props);
this.state = { active: false };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(state => ({
active: !state.active
}));
}
render() {
const { active } = this.state;
return (
<article>
<h1>10. Keyframes</h1>
<div className={`${sky} ${active ? animatesky : ''}`}>
<div className={`${cloudWrapper} ${active ? animatecloud : ''}`}>
<div className={`${cloud}`} />
<div className={`${cloud} ${cloud2}`} />
<div className={`${cloud} ${cloud3}`} />
</div>
<div className={`${sun} ${active ? animatesun : ''}`} />
<div className={`${moonWrapper} ${active ? animatemoon : ''}`}>
<div className={moon} />
<div className={`${moon} ${moon2}`} />
</div>
<div className={`${ground} ${active ? animateground : ''}`} />
</div>
<button onClick={this.handleClick}>
{active ? 'Stop' : 'Play'}
</button>
</article>
);
}
}