はじめに:スクロールしても“ついてくる”の正体
「スクロールしてもついてくるバナー、どう作るの?」
——私もまさにここから始まりました。

はじめてその動きを見たとき、「えっ、ページを動かしてもずっといる!」「これ、どうやってるの?」と完全に「???」状態…
当時は“フローティングバナー”という言葉すら知らず、
「スクロールしてもついてくるバナー」でひたすら検索していたんです。
 うさちゃん
うさちゃんうんうん、最初は名前も知らないものばかりだよね〜!
そのおかげで、HTMLやCSSをちょっとずつ触るようになり、
「思ったより簡単にできるかも!」と感じたのが、私のコーディングの第一歩でした。
この記事では、そんな私の“最初の学び”をもとに、
初心者でも迷わず作れるフローティング(追従)バナーの基本と設置方法をできるだけわかりやすく紹介していきます。
コーディングに自信がなくても大丈夫。
HTMLとCSSの基本だけで、あなたのサイトにも「スクロールしても残るバナー」が設置できます。
- サイトの目的に合った3タイプ(固定ヘッダー/フッター、サイド追従、範囲限定追従)が選べる
- スマホでも崩れにくい安全なCSS(safe-area、z-index、タップ領域)を理解できる
- 閉じるボタンやフェード演出など、邪魔にならないUIを組み込める
- 公開前チェックリストで、不具合を事前に防げる
それでは、フローティング(追従)バナーの基本から一緒に見ていきましょう!
フローティング(追従)バナーとは?
フローティング(追従)バナーとは、ユーザーがページをスクロールしても、
画面の一定位置に固定されて表示され続ける案内ブロックのこと。


たとえば──
- ECサイトの「カートに追加」ボタン
- サービスサイトの「今すぐ相談」リンク
- ブログの「お問い合わせ」バナー
こうした行動(CTA)を見失わせない工夫として使われています。
- 期間限定セールやクーポンを、画面下に固定して告知
- 記事を読み進めても、右側に「問い合わせ」ボタンを追従表示
- スマホでは右下に小さな“丸ボタン”で設置してスペース節約
最初は、「固定位置(上・下)」か「サイド追従」から試すのがおすすめ。
仕組みをつかんだら、徐々に動きやデザインを加えていきましょう。
フローティングバナーのメリット・デメリット
それでは次に、フローティング(追従)バナーを使うときの良い点と注意点を見ていきましょうね。
「どんなときに使うと効果的なのか?」が分かると、設置の判断がしやすくなりますよ。
メリット
- 常に目に入る位置で注目を集めやすい
 スクロールしても消えないので、ユーザーがページを読み進めても大事な情報を見逃しにくくなります。
- 行動(CTA)を後押ししてコンバージョンアップ
 「今すぐ購入」「問い合わせる」などのアクションボタンを固定表示することで、
 “戻らなくても押せる”導線ができ、行動率を高められます。
- どんなレイアウトにもなじみやすい
 ヘッダー・フッター・サイドなど、表示位置を変えるだけで幅広いサイトデザインに対応できます。
デメリット
- やりすぎると“邪魔”に感じられる
 画面を圧迫したり、本文を隠してしまうデザインはNG。
 「閉じるボタン」や「控えめな演出」で、ユーザーの操作を優先しましょう。
- スマホではレイアウトが崩れやすい
 画面幅が小さいスマホでは、バナーが他の要素に重なりやすくなります。safe-areaやz-indexの調整で見切れを防ぐのが基本です。
- UXやSEOへの影響に注意
 表示が重くなったり、ページ全体の可読性を下げると、SEO面でもマイナスに。
 アニメーションや画像を入れすぎず、軽く・シンプルに保つことを意識しましょう。
フローティング(追従)バナーの種類と選び方
フローティングバナーには、目的に合わせて3つのタイプがあります。
ここでは、それぞれの特徴とおすすめの使い方をまとめて紹介しますね。



どんな時にどのタイプを使うか”が分かると、
迷わず選べるようになるよ!
① 固定位置のバナー(ヘッダー/フッター)
画面の上部や下部に固定され、ページをスクロールしても常に表示され続けるタイプです。
最もオーソドックスで、サイト全体での案内やCTAに向いています。
- フッターに「今すぐ申し込む」ボタンを固定
- ヘッダーに「メニュー」や「検索バー」を常時表示
おすすめ用途:キャンペーン告知/重要なメッセージ/問い合わせボタン
ページ上部に残る「メニュー」や「検索バー」と同じ仕組みで、常に見える位置に固定されます。
② サイドに追従するバナー
画面の右や左に配置し、スクロールしてもその位置に固定されるタイプです。
本文の邪魔をせず、ユーザーの視界の端でアピールできます。
- ECサイトの右側に「カートに追加」ボタンを設置
- 左側に「シェアボタン」や「チャット相談」を固定
おすすめ用途:問い合わせ・SNS誘導・補助的な案内
ECサイトでよく見る「カートに入れる」ボタンのように、画面の端でスクロールに合わせて動くタイプです。
③ 範囲限定で追従するバナー
特定のセクションをスクロールしている間だけ表示されるタイプです。
読みやすさを損なわず、タイミングを選んで出せるのがポイント。
- 記事の途中で「関連記事はこちら」バナーを一時的に表示
- 特定のキャンペーンエリア内だけでクーポンを表示」や「チャット相談」を固定
おすすめ用途:記事内の補足案内・特定ページ限定プロモーション
記事内で「関連記事はこちら」などを一時的に表示し、セクションを超えると自動で消えるタイプです。
どのタイプから始めるのがいい?
最初に挑戦するなら、1. 固定位置のフッターバナーがいちばんおすすめです。
HTMLとCSSだけで実装でき、スマホ対応もしやすいですよ。
JavaScriptを使った3. 範囲限定タイプは少し上級編。
ステップアップとして後で挑戦してみましょう。
HTMLとCSSで作る基本のフローティング(追従)バナー
ここからは、HTMLとCSSだけで作れる基本的なフローティングバナーを紹介します。
特別なスクリプトがなくても、簡単なコードでしっかり動くのでコピペで試してみてください。
パターン1:常に画面下部に表示されるバナー
ページをスクロールしても、常に画面下部に固定されて表示されるシンプルなタイプです。


<div class="floating-banner">
  常に画面下部に表示されるフローティングバナー
</div>.floating-banner {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  background-color: #d4355d;
  color: white;
  padding: 10px 20px;
  font-size: 16px;
  text-align: center;
  width: 100%;
}- position: fixed;…スクロールしても画面上に固定。
- bottom: 0;…画面下にぴたっと固定。
- left: 50%+- transform: translateX(-50%)…中央に揃える定番テクニック。
コツ:位置指定(top / bottom / left / right)を忘れると、思わぬ場所に表示されることがあります。
しっかり固定位置を指定しましょう。
パターン2:サイドに追従する縦書きバナー
画面の右側に固定され、スクロールしても同じ位置に追従するタイプです。
テキストを縦書きにして、日本語サイトにぴったりなデザインにできます。


<div class="floating-banner">
  画面のサイドにスクロールしても追従するバナー
</div>.floating-banner {
  position: fixed;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  background-color: #d4355d;
  color: white;
  padding: 10px 20px;
  font-size: 16px;
  width: 30px; /* バナー幅 */
  height: auto; /* 高さを自動調整 */
  writing-mode: vertical-rl; /* 縦書き */
  display: flex;
  align-items: center; /* 縦方向中央揃え */
  justify-content: center; /* 横方向中央揃え */
  white-space: nowrap; /* テキストが折り返さないように */
}- writing-mode: vertical-rl;…日本語の縦書きにできる。
- display: flex;で縦横の中央揃えも簡単。
- サイド固定は「問い合わせ」「チャット」などに最適。
応用:left: 0; に変えれば、左側にも配置できます。
パターン3:画像バナーを右下に固定する
画像を使ったバナーを画面右下に表示するパターンです。
広告バナーやお知らせボタンなどに向いています。
※バナー画像は、適切なサイズに合わせて表示されるようにします。


<!-- 画面右下に表示される画像バナー -->
<div class="floating-banner">
  <img src="https://via.placeholder.com/120x120/ff6347/ffffff?text=Ad" alt="広告バナー">
</div> /* 右下に画像バナーを配置 */
.floating-banner {
  position: fixed;
  bottom: 20px; /* 画面下から20pxの距離 */
  right: 20px;  /* 画面右から20pxの距離 */
  width: 300px;  /* バナーの幅を指定 */
  height: auto;  /* 高さを自動調整 */
  z-index: 9999;  /* 他の要素よりも前面に表示 */
}
.floating-banner img {
  width: 100%;  /* バナー内で画像の幅を100%にする */
  height: auto; /* 画像の比率を保ちながら自動調整 */
}- position: fixed;+- bottom/right…右下に固定。
- z-index: 9999;…他の要素より手前に表示。
- 画像サイズはwidth: 100%で自然に調整。
補足:src 属性に画像のURL(ここではサンプル画像を使用)を指定
(今回はサンプル画像を使ってますが、自分で作ったバナー画像を設定すればオリジナル感UP)
コツ:bottomとrightの数値(例:20px)は、デバイスに合わせて微調整すると◎。



どのパターンも、HTMLとCSSだけで実現できます。
まずは「固定してみる」感覚をつかむところから始めてみましょう。
さらに便利に!JavaScriptで動きを追加してみよう
HTMLとCSSだけでも十分ですが、
JavaScriptを使うと「動きのあるバナー」が作れるようになります。
ここでは、「スクロール位置に合わせてバナーが表示/非表示になる」
簡単なサンプルを紹介します。



むずかしそうに見えるけど、実は“コピペで動く”レベルなんだよ!
パターン4:スクロール位置によって追従するバナー
このパターンでは、ページの特定範囲だけで表示されるバナーを作ります。
ページをスクロールして中央あたりに来たら、ふわっと表示される仕組みです。


基本的なコード(HTMLに全体のコードを記述した例を見たい方はこちら)
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>スクロールで表示されるバナー</title>
    <style>
        body {
            height: 2000px; /* スクロールテスト用に長いページ */
            margin: 0;
            font-family: Arial, sans-serif;
        }
        /* セクションのスタイル */
        .section {
            height: 1000px;
            background-color: #f0f0f0;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        /* フローティングバナーのスタイル */
        .floating-banner {
            position: fixed;
            top: 300px; /* 画面の上から20pxの位置 */
            left: 50%;
            transform: translateX(-50%);
            background-color: #ffcc00;
            padding: 10px 20px;
            color: white;
            font-size: 18px;
            opacity: 0; /* 初期状態で非表示 */
            transition: opacity 0.3s ease-in-out; /* 滑らかなフェードイン・アウト */
        }
    </style>
</head>
<body>
    <div class="section">
        <h2>セクション1</h2>
        <p>スクロールするとバナーが表示されます。</p>
    </div>
    <div class="floating-banner">
        このバナーはスクロール位置によって表示されます
    </div>
    <div class="section">
        <h2>セクション2</h2>
        <p>次のセクションです。</p>
    </div>
    <script>
        const banner = document.querySelector('.floating-banner'); // バナー要素
        const section = document.querySelector('.section'); // セクション要素
        window.addEventListener('scroll', function() {
            const scrollY = window.scrollY; // 現在のスクロール位置
            const sectionTop = section.offsetTop; // セクションの上部位置
            const sectionHeight = section.offsetHeight; // セクションの高さ
            const sectionMiddle = sectionTop + sectionHeight / 2; // セクションの中央位置
            // スクロール位置がセクションの中央に到達したらバナーを表示
            if (scrollY >= sectionMiddle - 100 && scrollY < sectionMiddle + 100) {
                banner.style.opacity = 1; // バナーを表示
            } else {
                banner.style.opacity = 0; // バナーを非表示
            }
        });
    </script>
</body>
</html>🧩 HTML
<div class="section">
  <h2>セクション1</h2>
  <p>スクロールするとバナーが表示されます。</p>
</div>
<div class="floating-banner">
  このバナーはスクロール位置によって表示されます
</div>
<div class="section">
  <h2>セクション2</h2>
  <p>次のセクションです。</p>
</div>🎨 CSS
/* セクションのスタイル */
.section {
  height: 1000px;
  background-color: #f0f0f0;
  display: flex;
  justify-content: center;
  align-items: center;
}
/* フローティングバナーのスタイル */
.floating-banner {
  position: fixed;
  top: 300px; /* 画面の上から20pxの位置 */
  left: 50%;
  transform: translateX(-50%);
  background-color: #ffcc00;
  padding: 10px 20px;
  color: white;
  font-size: 18px;
  opacity: 0; /* 初期状態で非表示 */
  transition: opacity 0.3s ease-in-out; /* 滑らかなフェードイン・アウト */
}⚙️ JavaScript
const banner = document.querySelector('.floating-banner'); // バナー要素
const section = document.querySelector('.section'); // セクション要素
window.addEventListener('scroll', function() {
  const scrollY = window.scrollY; // 現在のスクロール位置
  const sectionTop = section.offsetTop; // セクションの上部位置
  const sectionHeight = section.offsetHeight; // セクションの高さ
  const sectionMiddle = sectionTop + sectionHeight / 2; // セクションの中央位置
  // スクロール位置がセクションの中央に到達したらバナーを表示
  if (scrollY >= sectionMiddle - 100 && scrollY < sectionMiddle + 100) {
      banner.style.opacity = 1; // バナーを表示
  } else {
      banner.style.opacity = 0; // バナーを非表示
  }
});- position: fixed;
 画面上に固定して、スクロールしても動かないようにします。
- opacityと- transition
 初期状態を非表示(opacity: 0)にして、
 条件を満たしたときに- opacity: 1に変えることで、
 フェードイン/アウトのような自然なアニメーションができます。
- window.scrollY
 いまページがどこまでスクロールされたかを数値で取得できます。
 ここを基準に「どの位置で表示するか」を設定します。
カスタマイズのヒント
| 項目 | 変更例 | 効果 | 
|---|---|---|
| 表示位置 | top: 200px; | バナーを少し上に表示 | 
| 表示タイミング | sectionMiddle ± 50 | 早め/遅めに出す | 
| フェード速度 | transition: opacity 0.5s ease; | ゆっくり表示 | 
コツ:数値を少しずつ変えて、どんなタイミングで出てくるか試してみると理解が早いです。
JavaScriptを少し加えるだけで、
「出る」「消える」といった動的な演出ができるようになります。
HTMLとCSSのバナーに慣れてきたら、
ぜひこのパターンで“動きのある表現”にもチャレンジしてみましょう!
初心者がつまずきやすいポイントと解決策
ここでは、フローティングバナーを設置するときに
初心者がよく悩む3つのトラブルと、その解決策を紹介します。
① バナーが他の要素を隠してしまう
よくある原因:position: fixed; で固定したバナーが、本文やボタンにかぶってしまう。
- z-indexを調整して、バナーの重なり順をコントロール。
- 位置(top / bottom)を見直して、他の要素に干渉しない配置に。
.floating-banner {
    z-index: 10; /* 他の要素より前に出す・出さないを調整 */
}コツ:かぶりやすい場合は、padding-bottom などで本文に余白を作るのも効果的です。
② スマホ表示でレイアウトが崩れる
よくある原因:PC基準でデザインしたまま、スマホでは大きすぎたり位置がズレたりする。
レスポンシブ対応(メディアクエリ)で画面サイズに応じて調整しましょう。
@media screen and (max-width: 600px) {
  .floating-banner {
    top: 150px;   /* スマホでは少し下げて表示 */
    font-size: 14px; /* 文字を小さく調整 */
  }
}ポイント:safe-area-inset を考慮して、iPhoneなどでもUIが被らないように調整すると◎。
③ 「バナーが邪魔」と感じさせない工夫
よくある原因:目立たせようとしすぎて、ユーザーの視線や操作を妨げてしまう。
- 色やサイズを控えめにして、ページデザインに溶け込ませる。
- フェードイン・アウトで“自然に登場する”動きを付ける。
.floating-banner {
    transition: opacity 0.3s ease-in-out;
}補足:「閉じる」ボタンを設けるとユーザー体験がさらに快適になります。
まとめ:まずはシンプルな一歩から始めよう
ここまで、フローティング(追従)バナーの基本から設置方法、
そしてよくあるトラブルの解決法までを一緒に見てきましたね。
改めてポイントを整理すると、こんな感じです👇
- HTMLとCSSだけでも設置できる
 →position: fixed;で画面に固定するのが基本!
- 用途に合わせて3タイプを選べる
 → 固定ヘッダー/サイド追従/範囲限定で応用自在。
- JavaScriptを使えば“動き”もプラスできる
 → フェード表示やスクロール連動で魅力UP!
- ユーザーにやさしい設計を意識する
 → スマホ対応・非侵入型デザインで体験を損なわない。
最初は「こんな短いコードで本当に固定されるの?」と思っていました。
でも、コピペで試してみるだけでも、仕組みがぐっと理解しやすくなるんです。
フローティングバナーは、HTMLとCSSの基本だけで作れるうえ、
サイトの見た目を整えるだけでなく、ユーザーの行動を後押ししてくれる要素。
「やってみたらこんなに変わるんだ!」と感じられる、最初の一歩にぴったりですよ🌸
ぜひ、あなたのサイトでも試してみてくださいね🐰💫









