]> git.r.bdr.sh - rbdr/forum/commitdiff
Add animation to error block
authorRuben Beltran del Rio <redacted>
Sun, 14 Mar 2021 21:45:22 +0000 (22:45 +0100)
committerRuben Beltran del Rio <redacted>
Sun, 14 Mar 2021 21:45:22 +0000 (22:45 +0100)
src/animations/blink.js [new file with mode: 0644]
src/components/error_block/error_block.svelte

diff --git a/src/animations/blink.js b/src/animations/blink.js
new file mode 100644 (file)
index 0000000..eeed3de
--- /dev/null
@@ -0,0 +1,25 @@
+import { sineOut } from 'svelte/easing';
+
+export const blink = function whoosh(node, params) {
+
+  const originalWidth = parseFloat(getComputedStyle(node).width);
+  const originalHeight = parseFloat(getComputedStyle(node).height);
+
+  return {
+    delay: params.delay || 0,
+    duration: params.duration || 400,
+    easing: params.easing || sineOut,
+    css: (t, u) => {
+
+      const halfWidth = originalWidth / 2;
+      const halfHeight = originalHeight / 2;
+      // const padding = t < 0.8 ? halfWidth * (1 - t) / 0.8 : halfWidth / 2 + 1;
+      const height = t <= 0.2 ? (originalHeight * t / 0.2) : originalHeight;
+      const marginY = t <= 0.2 ? (halfHeight * (1 - t / 0.2)) : 0;
+      const width = t > 0.2 ? ((t - 0.2) / 0.8) * originalWidth : 0;
+      const marginX = t > 0.2 ? (1 - ((t - 0.2) / 0.8)) * halfWidth : halfWidth;
+
+      return `width: ${width}px; height: ${height}px; margin: ${marginY}px ${marginX}px`;
+    }
+  };
+};
index e46afa1400eab3a8cfed2029b451771b6996987b..b85a2ea196af579dc4dae373badf0c063dda5544 100644 (file)
@@ -1,9 +1,11 @@
 <script>
   import { _ } from 'svelte-i18n';
   export let message;
+
+  import { blink } from '$/animations/blink';
 </script>
 
-<div>
+<div transition:blink>
   <h2>{$_('error.generic.title')}</h2>
   <p>{message || $_('error.generic.message')}</p>
 </div>
@@ -15,8 +17,8 @@
     color: yellow;
     font-family: 'ヒラギノ角ゴ ProN' , 'Hiragino Kaku Gothic ProN' , '游ゴシック' , '游ゴシック体' , YuGothic , 'Yu Gothic' , 'メイリオ' , Meiryo , 'MS ゴシック' , 'MS Gothic' , HiraKakuProN-W3 , 'TakaoExゴシック' , TakaoExGothic , 'MotoyaLCedar' , 'Droid Sans Japanese' , sans-serif;
     margin: 0 10px 0 0;
-    padding: 100px 5px;
     text-align: center;
+    overflow: hidden;
   }
 
   h2, p {
 
   h2 {
     text-transform: uppercase;
+    margin: 100px 5px 10px;
+  }
+
+  p {
+    margin: 10px 5px 100px;
   }
 </style>