SVG画像のバウンスのアニメーションの実装 - CSS

SVG画像のバウンスのアニメーションのコードを紹介します。

コード

以下のコードを記述します。
bounce01.css
.bounce {
  padding-top: 120px;
  padding-left:64px;
  width: 120px;
  animation: bounce_frame 0.8s linear 0s infinite;
}

@keyframes bounce_frame {
  0% {
    transform: scale(1.0, 1.0) translate(0%, 0%) translateY(0px);
  }

  15% {
    transform: scale(0.9, 0.9) translate(0%, 5%) translateY(0px);
  }

  30% {
    transform: scale(1.3, 0.8) translate(0%, 10%) translateY(0px);
  }

  50% {
    transform: scale(0.8, 1.3) translate(0%, -10%) translateY(-60px);
  }

  70% {
    transform: scale(1.1, 0.9) translate(0%, 5%) translateY(0px);
  }

  100% {
    transform: scale(1.0, 1.0) translate(0%, 0%) translateY(0px);
  }
}
bounce01.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <link rel="stylesheet" href="bounce01.css" />
</head>
<body>
  <object class="bounce" type="image/svg+xml" data="img.svg"></object>
</body>
</html>

解説

SVG画像はobjectタグで表示します。詳しくはこちらの記事を参照して下さい。
 <object class="bounce" type="image/svg+xml" data="img.svg"></object>

補足
imgタグで以下のタグで記述した場合も同様の動作になります。
<img class="bounce" src="img.svg"/>

キーフレームのscale translate 部分でバウンスのアニメーションを設定します。
丸い画像を変形により、つぶす効果のアニメーションを記述しています。座標が左上のため、単純につぶすと画像が上に移動しているように見えるため、 つぶれた際に、下に移動させることで重力の影響でつぶれているように見せるアニメーションになります。
 transform: scale(1.0, 1.0) translate(0%, 0%)

translateY がジャンプにより上下に移動するアニメーションになります。
translateY(-60px)

表示結果

上記のページをWebブラウザで表示します。ページが表示されると、画像のアニメーションが開始します。 バウンスの効果がついたアニメーションが再生されます。




動画での表示結果です。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2022-07-19
iPentec all rights reserverd.