セクション間を波で繋ぐアニメーション

モーション種別
  • スーッと系
コンポーネント
  • 背景
トリガー
  • 常時
技術
  • CSSのみ

概要

色なしのセクションと色付きのセクションの間を波で繋ぐアニメーションです。
セクション間が寂しいなーって時に使えると思います。

セクション間にdivタグを挟み、SVGにて波を描画しています。アニメーションを自然にループさせるため、同じSVGを2つ横に並べています。横に波のSVG1枚分スライドさせるアニメーションにすることで、自然なループにさせています。

コードサンプル

HTML

<div class="container">
  <section class="section1">
    <p>section1</p>
  </section>

  <div class="wave-wrapper">
    <div class="wave-inner">
      <!-- 1枚目 -->
      <svg class="wave-svg" viewBox="0 0 1200 120" preserveAspectRatio="none">
        <path
          d="M0,40
               C 150,80  300,0   450,40
               S 750,80  900,40
               S 1050,0 1200,40
               L1200,120
               L0,120
               Z"
          fill="#08254f"
        />
      </svg>

      <!-- 2枚目(同じものをもう1枚) -->
      <svg class="wave-svg" viewBox="0 0 1200 120" preserveAspectRatio="none">
        <path
          d="M0,40
               C 150,80  300,0   450,40
               S 750,80  900,40
               S 1050,0 1200,40
               L1200,120
               L0,120
               Z"
          fill="#08254f"
        />
      </svg>
    </div>
  </div>

  <section class="section2">
    <p>section2</p>
  </section>
</div>

CSS

.container {
  width: 80%;
}
.section1 {
  text-align: center;
  background: #f4f5f9;
}

.section2 {
  text-align: center;
  background: #08254f;
  color: #f4f5f9;
}

/* 波エリアの器 */
.wave-wrapper {
  position: relative;
  height: 80px;
  overflow: hidden;
  background: #f4f5f9; /* 上のセクションと同じ色 */
}

/* 波2枚を横に並べるコンテナ */
.wave-inner {
  display: flex;
  width: 200%; /* 2枚ぶん */
  height: 100%;
  animation: wave-move 8s linear infinite;
}

/* 各SVGは半分ずつ */
.wave-svg {
  width: 50%;
  height: 100%;
  flex-shrink: 0;
}

/* 波を横へスライド(開始と終了の絵が完全一致) */
@keyframes wave-move {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%); /* 2枚ぶんのうち1枚分移動 */
  }
}

兵庫県神戸市を拠点に"Webコーダー"としてWebサイト構築を行っております。
前職はシステムエンジニアとして、プロジェクトマネージャーからプログラマーまで上流から下流のポジションを経験しました。
システム導入、フロントエンド、バックエンドの開発に携わった経験を元に、Webサイトのコーディングのサポートをいたします。

お問い合わせ Contact

制作のご依頼やその他ご相談は、お問い合わせフォームにて受け付けております。

お問い合わせフォームへ