HTML/CSS
投稿日:

動画より軽い!CSSだけで作る没入型演出

おはようございます!株式会社ファストコーディングの働くおかんです!

最近、子どもたちと一緒にYouTubeを見ていて気づいたんですが、動画の読み込みが遅いと途端に興味を失うんですよね。ほんの2秒待つぐらいでも、もう諦めてフリックしている(ショート動画です)んです。子供は正直で、ある意味極端だと思いますが、私たち大人も同じで、Webサイトでカッコいいアニメーションがあっても、重くて表示が遅いとすぐにページを閉じてしまいます。

実際、クライアントから「インパクトのある演出が欲しい」と言われて、つい動画背景を提案したくなる気持ちはよくわかります。でも、動画ファイルは解像度を相当うまくしないと表示が重くなりがちですし、モバイル環境では自動再生の制限もあって思い通りに動かないこともあります。

そこで今回は、CSSだけで没入感を演出する方法をご紹介します。軽量でありながら、ユーザーを引き込む表現は十分に作れます。実際に案件で使った手法も含めて解説しますので、次の提案に活かしてもらえれば嬉しいです。

CSSで実現する没入型演出の3つの手法

ここからは、実際に案件で使ったCSSアニメーション手法を3つ紹介します。それぞれコード例も載せますので、参考にしてください。

1. パララックス効果で奥行きを演出

パララックスは、スクロールに応じて背景と前景が異なる速度で動く表現です。奥行き感が生まれるため、没入感を高められます。

実装にはtransform: translateZ()を使います。以下は基本的なコード例です。

<div class="parallax-container">
  <div class="parallax-layer layer-back">
    <div class="content-back"></div>
  </div>
  <div class="parallax-layer layer-base">
    <div class="content-front">
      <h1>Welcome</h1>
    </div>
  </div>
</div>
.parallax-container {
  height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  perspective: 1px;
}

.parallax-layer {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.layer-back {
  transform: translateZ(-1px) scale(2);
}

.layer-back .content-back {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  height: 100%;
}

.layer-base {
  transform: translateZ(0);
}

.content-front {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
}

.content-front h1 {
  font-size: 4rem;
  color: white;
  text-shadow: 2px 2px 8px rgba(0,0,0,0.3);
}

*ちょっとわかりにくいんですが、、、スクロールしてください

このコードでは、perspectivetranslateZを組み合わせて、背景と前景の動く速度を変えています。スクロールするだけで立体感が生まれ、動画を使わなくても没入感を演出できます。

実際にはもう少し要素を追加しましたが、お客様の採用サイトのトップページに採用したところ、ページサイズは動画版と比べて約80%削減でき、表示速度も大幅に改善しました。

2. グラデーションアニメーションで動的な印象を

静的なグラデーションではなく、色が動くグラデーションアニメーションを使うと、動画のような動きを再現できます。

<div class="animated-gradient">
  <div class="content">
    <h2>CSSで動く背景</h2>
    <p>軽量でスムーズな演出</p>
  </div>
</div>
.animated-gradient {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(
    45deg,
    #ff6b6b,
    #4ecdc4,
    #45b7d1,
    #f7b731,
    #ff6b6b
  );
  background-size: 400% 400%;
  animation: gradientShift 15s ease infinite;
}

@keyframes gradientShift {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

.content {
  text-align: center;
  color: white;
  z-index: 1;
}

.content h2 {
  font-size: 3rem;
  margin-bottom: 1rem;
  text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}

.content p {
  font-size: 1.2rem;
}

この手法のポイントは、background-sizeを大きく設定し、animationで位置を変えることです。グラデーションが滑らかに動くため、静止画では出せない躍動感が生まれます。

ある美容系サービスのLPで使ったところ、お客様から「動画みたいに見えるのに軽い」と好評でした。特にスマホでの表示が安定していたのも良かったんだと思います。スマホで動画を読み込むときは若干カクカクしますからね。

3. CSSフィルターとブレンドモードで奥行きを作る

backdrop-filtermix-blend-modeを使うと、重なり合う要素に透過効果や合成効果を加えられます。これにより、レイヤーが重なった奥行きのある表現が可能です。

<div class="blend-container">
  <div class="background-shape shape-1"></div>
  <div class="background-shape shape-2"></div>
  <div class="background-shape shape-3"></div>
  <div class="glass-panel">
    <h2>奥行きのある演出</h2>
    <p>CSSフィルターで実現</p>
  </div>
</div>
.blend-container {
  position: relative;
  min-height: 100vh;
  background: #1a1a2e;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.background-shape {
  position: absolute;
  border-radius: 50%;
  filter: blur(60px);
  animation: float 20s ease-in-out infinite;
}

.shape-1 {
  width: 400px;
  height: 400px;
  background: #ff6b6b;
  top: -100px;
  left: -100px;
  mix-blend-mode: screen;
  animation-delay: 0s;
}

.shape-2 {
  width: 500px;
  height: 500px;
  background: #4ecdc4;
  bottom: -150px;
  right: -150px;
  mix-blend-mode: screen;
  animation-delay: 5s;
}

.shape-3 {
  width: 350px;
  height: 350px;
  background: #f7b731;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  mix-blend-mode: screen;
  animation-delay: 10s;
}

@keyframes float {
  0%, 100% {
    transform: translate(0, 0);
  }
  33% {
    transform: translate(50px, -50px);
  }
  66% {
    transform: translate(-50px, 50px);
  }
}

.glass-panel {
  position: relative;
  padding: 3rem;
  backdrop-filter: blur(10px);
  background: rgba(255, 255, 255, 0.1);
  border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: white;
  text-align: center;
  z-index: 10;
}

.glass-panel h2 {
  font-size: 2.5rem;
  margin-bottom: 1rem;
}

.glass-panel p {
  font-size: 1.1rem;
}

*背景がとってもゆっくり動いています。ゆっくりみてあげてください。

このコードでは、複数の図形をmix-blend-mode: screenで重ね、さらにアニメーションで動かしています。前面の要素にbackdrop-filterを適用することで、ガラスのような透過効果が加わり、立体感が増します。

実際にイベント告知ページのプロジェクトで使ってみました。背景が柔らかく動くため、静的なデザインと比べて目を引く効果がありました。動画なしでも「動き」を感じさせられるのが大きなメリットです。

動画もいいんですが、、、CSSでも結構できますよ

あるECサイトのリニューアル案件で、動画背景からCSS演出に切り替えた経験があります。

当初、お客様は商品の世界観を伝えるために動画背景を希望していました。しかし、ページの読み込み速度が遅く、離脱率が高いという課題がありました。そこで、パララックスとグラデーションアニメーションを組み合わせた提案をしました。

結果として、ページサイズは約70%削減され、表示速度は2秒以上改善しました。クライアントからは「軽くなったのに、むしろ洗練された印象になった」と評価されました。

この案件で学んだのは、演出は「重さ」ではなく「設計」で決まるということです。CSSの特性を理解して組み合わせれば、動画に頼らなくても十分に没入感を演出できます。

*ただし。やっぱり動画に比べるとCSSを使いながら少しずつアニメーションを作っていくような形になりますので、Webデザイナーさんの協力はかなり大事、、、です。

まとめ

動画を使わなくても、CSSだけで没入感のある演出は十分に作れます。パララックス、グラデーションアニメーション、フィルター効果を組み合わせれば、軽量でありながらユーザーの目を引くデザインが実現できます。

次のプロジェクトで「リッチな演出がほしいけど、重くしたくない」と悩んだら、CSSでの実装を検討してみてください。コード量も少なく、保守性も高いため、長期的に運用しやすいのも魅力です。

もし実装に不安がある場合や、より高度な演出を検討したい場合は、株式会社ファストコーディングがCSS演出の設計から実装までサポートしています。軽量化とデザイン品質の両立を目指すなら、ぜひ一度相談してみてください。