javascript(gridのアニメーション)

■anime.js でグリッドを操作するアニメーション。
公式のHPでグリッド上のオブジェクトの操作が気になったので、サンプルを作って動かしてみる。公式のコードから少し編集して下のようなサンプルで試す。

html
グリッドの要素の square クラス(el クラス)は40準備して、横8×縦5のグリッドとなるようサイズや背景部分を調整している。

<html>
<head>
    <meta charset="utf-8">
    <link href="aniSample04.css" rel="stylesheet" type="text/css">
    <script src="../anime.min.js" defer></script>
    <script src="./aniSample04.js" defer></script>
</head>
<body>
<div class="grid-demo">
    <div class="grid">
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
      <div class="square el"></div>
    </div>
  </div>
</body>
</html>

css
.grid-demoが下の実行画面で黒色の部分、.gridが黄色の部分。

.grid-demo {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    width: 400px;
    height: 300px;
    background-color: Black;
}

.grid {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 55%;
    min-height: 120px;
    padding-top: 5px;
    padding-bottom: 5px;
    background-color: Yellow;
    flex-wrap: wrap;
}

.square {
    pointer-events: none;
    position: relative;
    width: 24px;
    height: 24px;
    margin: 1px;
    background-color: currentColor;
}

.el {
    color: blue;
}

javascript

anime({
  targets: '.el',
  scale: [
    {value: 0, easing: 'linear', duration: 2000},
    {value: 1, easing: 'easeInOutQuad', duration: 2000}
  ],
  delay: anime.stagger(800, {grid: [8, 5], from: 'first'}),
});

実行画面が下。左上から右下にかけてアニメーションが動いていく(staggerの中で first 設定にしているため)。上のjavascript の中で、scale で各オブジェクトの倍率を変更する。value 0 (サイズが0のため表示されない)に向かって、2000ミリ秒(2秒)かけて動き、その後、value 1(元のサイズ)に向かって、また2000ミリ秒(2秒)かけて動く。


centerの設定にすると、真ん中から外側に向かって動作する。


{grid: [4, 5], from: 'center'}) の設定にすると、横4×縦5の中の真ん中からアニメーションが始まる。


anime.js で気になったのは今まで見てきたものくらい。pathや遅延やこのグリッドなどを組み合わせて何かできそう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です