【Studio】ズームイン・アウトのスクロールアニメーションを実装

ブログ記事のサムネイルズームイン・アウト Studio

近年のWebデザインでは、スクロールに応じた動的なエフェクトがトレンドとなっています。
特に、ズームイン・アウトのアニメーションは、視線誘導や情報の強調に役立ち、コンテンツのインパクトを強めることができます。これは、単なる静的なデザインよりも、動きのあるコンテンツがユーザーの注意を引き、記憶に残りやすいためです。

そこで今回は、カスタムコードを活用して、スクロールに応じたズームアニメーションを追加する方法を解説します!

⚫︎カスタムコードとは?

Studioのカスタムコード機能についての使い方等は、以前の記事でご紹介しています。もしカスタムコード機能を初めて知ったという方は下記の記事もご覧ください。

ズームイン・アウトアニメーションとは?

ズームアニメーションの基本

ズームアニメーションとは、スクロールに応じて要素のサイズ(scale)を変化させるエフェクトです。
通常、Webページでは要素が静的に表示されますが、ズーム効果を追加することで、コンテンツに動きが生まれ、より洗練されたデザインに仕上げることができます。

ズームアニメーションを取り入れるメリット

コンテンツに動きを加え、印象に残りやすくする
スクロールに合わせて情報の強調や視線誘導を自然に行う
UX(ユーザーエクスペリエンス)を向上し、より魅力的なデザインを実現

Studioのカスタムコードを使用すれば、簡単にズームイン・アウトのスクロールアニメーションを実装できます。

ズームイン・アウトを実装する手順

カスタムCSSの追加

まず、Studioの「カスタムコードエディタ」に以下のコードを追加します。
このCSSは、スクロール時に要素をズームイン・アウトさせるための基盤となるスタイルです。

/* IDに「zoom」を含む要素の初期スタイル */
[id*="zoom"] {
    transition: opacity 0.5s ease-out, transform 0.5s ease-out; /* 透明度とサイズの変化をスムーズに */
    transform-origin: center; /* 拡大・縮小の基点を中央に */
    transform: scale(0.5); /* 初期サイズを小さく設定 */
    opacity: 1; /* 初期状態では表示 */
}

transition: opacity 0.5s ease-out, transform 0.5s ease-out;

  • 透明度とサイズの変化をスムーズにする
  • ease-out を使うことで、スクロール時に自然な動きを実現。

transform-origin: center;

  • 拡大・縮小の基点を中央に固定する(左上などにズレるのを防ぐ)。

transform: scale(0.5); opacity: 1;

  • ページロード時の初期サイズを50%に設定(スクロールで拡大)。
  • 初期状態では表示された状態にする

JavaScriptの追加

次に、「カスタムコードエディタ」に以下のJavaScriptを追加し、スクロール時にズームイン・アウトのアニメーションを適用します。

<script>
  setTimeout(() => {
    window.addEventListener("scroll", function () {
      const zoomElements = document.querySelectorAll("[id*='zoom']");
      if (!zoomElements.length) return;

      const scrollPosition = window.scrollY;
      const windowHeight = window.innerHeight;
      const fadeStart = 0;
      const fadeEnd = windowHeight * 2;
      const minScale = 1.0;
      const maxScale = 2.5;

      zoomElements.forEach(element => {
        if (scrollPosition >= fadeStart && scrollPosition <= fadeEnd) {
          const progress = scrollPosition / fadeEnd;
          const opacity = 1 - progress;
          const scale = minScale + progress * (maxScale - minScale);
          element.style.opacity = opacity;
          element.style.transform = `scale(${scale})`;
        } else if (scrollPosition > fadeEnd) {
          element.style.opacity = 0;
          element.style.transform = `scale(${maxScale})`;
        } else {
          element.style.opacity = 1;
          element.style.transform = `scale(${minScale})`;
        }
      });
    });
  }, 500);
</script>

スクロール位置の取得

const scrollPosition = window.scrollY;
const windowHeight = window.innerHeight;

window.scrollY;現在のスクロール位置を取得
window.innerHeight;画面の高さを取得し、ズーム計算に使用。


ズーム範囲とスケールの設定

const fadeStart = 0;
const fadeEnd = windowHeight * 2;
const minScale = 1.0;
const maxScale = 2.5;

minScale = 1.0;初期の最小サイズ
maxScale = 2.5;スクロール時の最大サイズ


スクロール時のズーム計算

const progress = scrollPosition / fadeEnd;
const opacity = 1 - progress;
const scale = minScale + progress * (maxScale - minScale);

スクロールの進行度に応じて、透明度とサイズを変化

実装結果

このカスタムコードを適用すると、スクロールに応じて要素が拡大・縮小するアニメーションが追加されます。下記はズームしながら透明になって消えていくようなアニメーションです。

さらに、下記のように複数の画像をズームイン・アウトして表示させることで、ギャラリーサイトなどで洗練された表現をすることが可能です。

STUDIOのカスタムコード実装例をチェック!

もっとStudioのカスタムコードでの事例を見たい方はこちら!
https://kreaidesign.studio.site/library

最新の制作事例をInstagramでチェックしてみてください!
InstagramのDMからお仕事のご相談をいただいた、先着5名様限定で定価の10%OFFにて、WEBサイト制作を実施させて頂きます!
https://www.instagram.com/kreai_design?igsh=dmdqNXdudmlxNWZv&utm_source=qr

インスタグラムのQRコード

私のココナラサービスでは、Studioを用いたWEBデザインから実装のサービスを提供しています。
カスタムコードのみの対応も承っていますので、ウェブサイトに個性を加えるためのカスタムコードを入れたい方、ぜひ詳細はココナラのプロフィールページをご覧ください。

STUDIOでオリジナルWEBサイト作成します 修正制限無し!デザイン/画像/文章丸投げOK!【2名様限定】

まとめ:STUDIOのカスタムコードでサイトの魅力をアップ!

ズームイン・ズームアウトのスクロールアニメーションを導入することで、サイトのデザインに動きとインパクトを加えることができます。特に、コンテンツの強調や視線誘導に効果的で、UXの向上につながります。👉 Studioでカスタムコードを活用し、魅力的なWebサイトを実装してみましょう! 🚀

コメント