added menu animation

This commit is contained in:
[poww10s]
2020-11-22 07:05:17 -05:00
parent 22f2f40924
commit 0648e8876a
2 changed files with 54 additions and 18 deletions
+32 -9
View File
@@ -1,4 +1,6 @@
.menu { .menu,
.menu-true,
.menu-false {
position: absolute; position: absolute;
background: white; background: white;
display: flex; display: flex;
@@ -12,10 +14,21 @@
min-width: 100vw; min-width: 100vw;
} }
.scale-out-tl { .menu-false {
-webkit-animation: scale-out-tl 0.3s cubic-bezier(0.55, 0.085, 0.68, 0.53) left: -100vw;
both; }
animation: scale-out-tl 0.3s cubic-bezier(0.55, 0.085, 0.68, 0.53) both;
.menu-true-animation {
-webkit-animation: scale-in-out-tl 0.3s
cubic-bezier(0.55, 0.085, 0.68, 0.53) both;
animation: scale-in-out-tl 0.3s cubic-bezier(0.55, 0.085, 0.68, 0.53) both;
}
.menu-false-animation {
-webkit-animation: scale-in-out-tl 0.3s
cubic-bezier(0.55, 0.085, 0.68, 0.53) reverse both;
animation: scale-in-out-tl 0.3s cubic-bezier(0.55, 0.085, 0.68, 0.53)
reverse both;
} }
/* ---------------------------------------------- /* ----------------------------------------------
@@ -30,7 +43,7 @@
* animation scale-out-tl * animation scale-out-tl
* ---------------------------------------- * ----------------------------------------
*/ */
@-webkit-keyframes scale-out-tl { @-webkit-keyframes scale-in-out-tl {
0% { 0% {
-webkit-transform: scale(1); -webkit-transform: scale(1);
transform: scale(1); transform: scale(1);
@@ -38,15 +51,20 @@
transform-origin: 0 0; transform-origin: 0 0;
opacity: 1; opacity: 1;
} }
100% { 75% {
-webkit-transform: scale(0); -webkit-transform: scale(0);
transform: scale(0); transform: scale(0);
-webkit-transform-origin: 0 0; -webkit-transform-origin: 0 0;
transform-origin: 0 0; transform-origin: 0 0;
opacity: 1; opacity: 1;
} }
100% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
} }
@keyframes scale-out-tl { @keyframes scale-in-out-tl {
0% { 0% {
-webkit-transform: scale(1); -webkit-transform: scale(1);
transform: scale(1); transform: scale(1);
@@ -54,13 +72,18 @@
transform-origin: 0 0; transform-origin: 0 0;
opacity: 1; opacity: 1;
} }
100% { 75% {
-webkit-transform: scale(0); -webkit-transform: scale(0);
transform: scale(0); transform: scale(0);
-webkit-transform-origin: 0 0; -webkit-transform-origin: 0 0;
transform-origin: 0 0; transform-origin: 0 0;
opacity: 1; opacity: 1;
} }
100% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
} }
.menu-logo { .menu-logo {
+22 -9
View File
@@ -5,16 +5,33 @@ import logo from '../../1f3b9.svg';
import './Menu.css'; import './Menu.css';
export default function MainMenu(props) { export default function MainMenu(props) {
const [open, setOpen] = useState(true); const [open, setOpen] = useState({
className: '',
openState: true,
});
const dispatch = useDispatch(); const dispatch = useDispatch();
const HandleClick = () => { const HandleClick = () => {
setOpen(!open); setOpen({
className: open.openState
? 'menu-true-animation'
: 'menu-false-animation',
openState: !open.openState,
});
};
const AnimationEnd = () => {
setOpen({
...open,
className: `menu-${open.openState}`,
});
}; };
return ( return (
<div> <div>
<div className={open ? 'menu' : 'menu scale-out-tl'}> <div
className={`menu ${open.className}`}
onAnimationEnd={AnimationEnd}>
<img src={logo} className="menu-logo" alt="logo" /> <img src={logo} className="menu-logo" alt="logo" />
<header className="menu-title">Alapatch</header> <header className="menu-title">Alapatch</header>
<div className="menu-button-container"> <div className="menu-button-container">
@@ -29,12 +46,8 @@ export default function MainMenu(props) {
<button className="menu-button">Load Patch</button> <button className="menu-button">Load Patch</button>
</div> </div>
</div> </div>
{!open && ( {!open.openState && (
<button <button className="menu-open-button" onClick={HandleClick} />
className="menu-open-button"
onClick={HandleClick}
onAnimationEnd={() => setOpen(!open)}
/>
)} )}
</div> </div>
); );