プログラミング

定期的に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

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

関連記事

Python

定期的にツイートするbotをPythonで作る方法

Twitterでツイートを行う botプログラムを Python(プログラミング言語)で作ります。このプログラムは、CentOS(Linuxの一種です)上で定期実行します。 目次1. 動作概要2. 環 …

プログラミング

Rubyのように書け、Cのように速いプログラム言語 Crystal の基本的な使い方

Crystal というプログラミング言語の基本的な使い方について紹介します。 実際に「使ってみたい」「試してみたい」といった方に向けて、コードを書き始めるまでの導入方法について書きました。文法の説明な …

web development

User Timing API を使って、特定の処理に掛かった時間を計測する

目次1. User Timing API について2. サンプルコード3. デモページ4. 参考仕様MDNブラウザの対応状況 1. User Timing API について User Timing L …

Python

Python のパッケージ管理ツール uv の雑感

目次1. Python のパッケージ管理ツール uv2. uv の特徴3. 使ってみた感想 1. Python のパッケージ管理ツール uv 🔗 astral-sh/uv &#x1F5 …

webpack 3 を使ったウェブページ開発手順

webpack 3 を使って、簡単なウェブページを開発する手順を紹介します。あくまで一つの例です。 1つ1つ細かい説明はできていませんが、「だいたいこんなふうにして作ることができますよ」ということが伝 …