From 1edb8cf0e920aacec8a44a9affe7ee9302102498 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 23 Apr 2021 15:33:33 +0900 Subject: [PATCH] add animation --- src/client/directives/click-anime.ts | 22 ++++++++++++++++++++++ src/client/directives/index.ts | 2 ++ src/client/style.scss | 24 ++++++++++++++++++++++++ src/client/ui/default.sidebar.vue | 12 ++++++------ 4 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/client/directives/click-anime.ts diff --git a/src/client/directives/click-anime.ts b/src/client/directives/click-anime.ts new file mode 100644 index 000000000..864155f07 --- /dev/null +++ b/src/client/directives/click-anime.ts @@ -0,0 +1,22 @@ +import { Directive } from 'vue'; + +export default { + mounted(el, binding, vn) { + el.addEventListener('mousedown', () => { + el.classList.add('_anime_bounce_ready'); + + el.addEventListener('mouseleave', () => { + el.classList.remove('_anime_bounce_ready'); + }); + }); + + el.addEventListener('click', () => { + el.classList.add('_anime_bounce'); + }); + + el.addEventListener('animationend', () => { + el.classList.remove('_anime_bounce_ready'); + el.classList.remove('_anime_bounce'); + }); + } +} as Directive; diff --git a/src/client/directives/index.ts b/src/client/directives/index.ts index 6513350e0..f0a012377 100644 --- a/src/client/directives/index.ts +++ b/src/client/directives/index.ts @@ -8,6 +8,7 @@ import hotkey from './hotkey'; import appear from './appear'; import anim from './anim'; import stickyContainer from './sticky-container'; +import clickAnime from './click-anime'; export default function(app: App) { app.directive('userPreview', userPreview); @@ -18,5 +19,6 @@ export default function(app: App) { app.directive('hotkey', hotkey); app.directive('appear', appear); app.directive('anim', anim); + app.directive('click-anime', clickAnime); app.directive('sticky-container', stickyContainer); } diff --git a/src/client/style.scss b/src/client/style.scss index ab8da9ccf..7c9b9f06b 100644 --- a/src/client/style.scss +++ b/src/client/style.scss @@ -520,3 +520,27 @@ hr { transform: scale3d(1, 1, 1); } } + +._anime_bounce { + animation: bounce ease 1s; + animation-iteration-count: 1; + transform-origin: 50% 50%; +} +._anime_bounce_ready { + transform: scaleX(0.90) scaleY(0.90) ; +} + +@keyframes bounce{ + 0% { + transform: scaleX(0.90) scaleY(0.90) ; + } + 13% { + transform: scaleX(1.10) scaleY(1.10) ; + } + 35% { + transform: scaleX(0.95) scaleY(0.95) ; + } + 100% { + transform: scaleX(1.00) scaleY(1.00) ; + } +} diff --git a/src/client/ui/default.sidebar.vue b/src/client/ui/default.sidebar.vue index b07914679..a55a1770f 100644 --- a/src/client/ui/default.sidebar.vue +++ b/src/client/ui/default.sidebar.vue @@ -1,6 +1,6 @@