定期的に動く画像のサンプル001

CSSアニメーションを使っている。

デモ

(1)

(2)

(1)に関するコード

HTML

<img id="targetIcon1" src="img/icon.png" />

CSS

.shake1 {
  animation: shake1 0.1s linear;
}

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

JavaScript

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

addPeriodicMoving(
  document.querySelector('#targetIcon1'),
  'shake1',
  4
);

参考

ソースコードはこちら