上毛印刷株式会社

【JavaScript】一定時間ごとにアニメーションするアイコンを実装

【JavaScript】一定時間ごとにアニメーションするアイコンを実装

2025年05月30日
WEBサイト制作
  • #HTML
  • #css
  • #JavaScript
  • #tips

こんにちは!
上毛印刷WEB制作担当のソーヤです。

今回は、とっても可愛いエフェクトを紹介します!

実装例

  • さる
  • ネズミ
  • 豚
  • うさぎ
  • ゾウ
  • イヌ
  • クマ
  • ネコ

HTML例

<div class="illust-box">
  <ul class="illust-list pos-point">
    <li class="illust-list__item illust-list__item01 dropTrigger pos-point">
      <img src="./monkey.png" alt="さる">
    </li>
    <li class="illust-list__item illust-list__item02 dropTrigger pos-point">
      <img src="./mouse.png" alt="ネズミ">
    </li>
    <li class="illust-list__item illust-list__item03 dropTrigger pos-point">
      <img src="./pig.png" alt="豚">
    </li>
    <li class="illust-list__item illust-list__item04 dropTrigger pos-point">
      <img src="./rabbit.png" alt="うさぎ">
    </li>
    <li class="illust-list__item illust-list__item05 dropTrigger pos-point">
      <img src="./elephant.png" alt="ゾウ">
    </li>
    <li class="illust-list__item illust-list__item06 dropTrigger pos-point">
      <img src="./dog.png" alt="イヌ">
    </li>
    <li class="illust-list__item illust-list__item07 dropTrigger pos-point">
      <img src="./bear.png" alt="クマ">
    </li>
    <li class="illust-list__item illust-list__item08 dropTrigger pos-point">
      <img src="./cat.png" alt="ネコ">
    </li>
  </ul>
</div>

CSS例

.illust-box {
  width: 100%;
  height: 620px;
  background-image: url(https://jomo-p.co.jp/cp/wp/wp-content/uploads/2025/05/2628756.jpg);
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
}
.illust-list{
  position: relative;
}
.illust-list__item{
  position: absolute;
  width: 110px;
  list-style: none;
}
.illust-list__item img{
  width: 100%;
}
.illust-list__item01 {
  top: 461px;
  right: 122px;
}
.illust-list__item02 {
  top: 160px;
  right: 42px;
}
.illust-list__item03 {
  top: 168px;
  right: 188px;
}
.illust-list__item04 {
  top: 455px;
  right: 258px;
}
.illust-list__item05 {
  top: 482px;
  left: 296px;
}
.illust-list__item06 {
  top: 167px;
  left: 291px;
}
.illust-list__item07 {
  top: 442px;
  left: 116px;
}
.illust-list__item08 {
  top: 179px;
  left: 41px;
}
@keyframes bound {
  0% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-20px);
  }
  100% {
    transform: translateY(0px);
  }
}
.is-jump{
  animation: bound .6s ease-in-out;
}

JavaScript例

setInterval(function() {
  const images = document.querySelectorAll('.illust-list__item > img');
  images.forEach(function(img) {
    img.classList.add('is-jump');
  });
  setTimeout(function() {
    images.forEach(function(img) {
      img.classList.remove('is-jump');
    });
  }, 800);
}, 3000);

まとめ

今回もjQueryではなく、Vanilla.jsで実装してみました。

コピペしてガンガン使ってください!

WEB制作担当ソーヤ

ソーヤ

上毛印刷WEB制作担当
東証プライム企業の本社WEB受託チームにてフロントエンドエンジニアの経験あり。


この記事に対するご意見・ご感想・ご質問等ありましたら、
ぜひ下記フォームにてお送りください。

    お名前必須
    メールアドレス必須
    お問い合わせ内容必須
    PAGE TOP