プログラミング

定期的にDOM要素をアニメーションするサンプルを用意しました

投稿日:

定期的にDOM要素をアニメーションするサンプルを用意しました。

DOM要素が対象ですので、div要素や img要素などが動かせます。

1. デモ

色を付けた div要素を動かしているデモを用意しました。

こんな感じになります。(これはアニメーションGIFです)

2. ソースコード

ポイントとなる部分を以下に掲載します。

HTML

  • p要素を div要素で囲んでいるだけです。
  • この div要素を動かします。
<div id="target">
  <p>Hi!</p>
</div>

CSS

  • @keyframes を使ってアニメーションを記述し、shake1という名前を付けています。
  • 同じ名前で少し紛らわしいですが、このアニメーションを利用するCSSクラスを定義し、shake1という名前を付けています。
.shake1 {
  animation: shake1 0.1s;
}

@keyframes shake1 {
  0%   { transform: translate(2px,  0px) rotate(0deg); }
  50%  { transform: translate(-4px, 0px) rotate(5deg); }
  100% { transform: translate(2px,  0px) rotate(0deg); }
}

JavaScript

  • DOM要素にアニメーションを適用する処理を、addPeriodicMoving という名前の関数にまとめています。
  • この関数の第三引数で、「○秒おきに実行する」の秒数を指定しますが、この時間設定は厳密なものではありません。
  • window.requestAnimationFrame() を使って定期的にアニメーションを実行しています。

※ ES6 の文法を使っています。

/**
 * DOM要素を定期的にアニメーションする。
 * @param {object} elm - DOM element
 * @param {string} className - CSS class name
 * @param {number} span- 何秒おきに動くか
 */
const addPeriodicMoving = (elm, className, span) => {
  let cnt = 0;
  const loop = () => {
    if (cnt % parseInt(span*30) === 0) {
      elm.classList.toggle(className);
    }
    cnt++;
    window.requestAnimationFrame(loop);
  };
  window.requestAnimationFrame(loop);
};

addPeriodicMoving(
  document.querySelector('#target'),
  'shake1',
  3
);

3. まとめ

これだけ単純な方法でウェブページに動きを加えることができるのは便利ですね。

4. 参考

📂-プログラミング
-

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

web development

Web Development for Beginners を読む:レッスン8, 9, 10

目次1. はじめに2. Lesson 8: Terrarium Project Part 1: Introduction to HTMLIntroductionTaskThe DocType and …

e-Stat API の利用に関するメモ

政府統計の総合窓口(e-Stat)−API機能 の利用に関するメモです。 政府統計の総合窓口(e-Stat)では、統計データ等が提供されており、プログラムで取得する事ができます。 気付いたこと 政府統 …

Web Workers API を使ったサンプル

Web Workers API を使ったサンプルページです。 目次1. デモページ2. 画面イメージ3. ソースコード4. 参考 1. デモページ デモページ 🔗 Web Worker …

JavaScript

JavaScript で URL を扱う場合の処理

JavaScript で URL文字列に関する処理を行う場合、セキュリティの観点から、URL()コンストラクタを使うことが推奨されます。URL()コンストラクタによって URLオブジェクトを生成し、そ …

Web Components

Web Components のサンプルコード

Web Components を使ったサンプルコードを紹介します。