スクロールするとお知らせバーを表示する方法
ページをスクロールすると画面上部にお知らせバーを表示する方法を紹介します。このサンプルでは、ページを開いた直後はお知らせバーを非表示にしておき、一定量まで下方向へスクロールすると画面上部へお知らせバーを表示します。スクロール位置をJavaScriptで確認し、指定した位置を境に表示状態を切り替える仕組みです。
お知らせバーが表示されたあとにページ上部へ向かってスクロールを戻し、指定したスクロール位置より上へ戻ると、お知らせバーは自動的に非表示になります。そのため、一度表示したバーを常に残すのではなく、現在のスクロール位置に合わせて表示・非表示を切り替えられます。ページを読み進めた利用者だけに案内を見せたい場合や、閲覧位置に応じて情報を知らせたい場合に利用できます。
Webサイトのお知らせ、キャンペーン情報、会員サイトの案内、ECサイトの告知など、ページを一定量読み進めたタイミングで情報を表示したい場面に利用できます。HTMLではお知らせ内容を変更でき、CSSでは背景色、文字色、余白などを調整できます。また、JavaScriptのスクロール量を変更することで、お知らせバーを表示・非表示に切り替える位置も用途に合わせて調整できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
ページを下へ300px以上スクロールすると、画面上部にお知らせバーが表示されます。300px未満まで戻ると非表示になります。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>スクロールするとお知らせバーを表示</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 画面上部へ表示するお知らせバー -->
<div class="scroll-notice-bar_bar" data-scroll-notice="">
スクロールすると表示されるお知らせです
</div>
<!-- ページコンテンツ -->
<main class="scroll-notice-bar_content">
<!-- タイトル -->
<div class="scroll-notice-bar_title">
ページをスクロールしてください
</div>
<!-- 説明文 -->
<p class="scroll-notice-bar_text">
下へスクロールすると画面上部にお知らせバーが表示され、上へ戻すと非表示になります。
</p>
<!-- スクロール量を確保するコンテンツ -->
<div class="scroll-notice-bar_space">
スクロールして動作を確認できます。
</div>
</main>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。 サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは画面上部へ表示するお知らせバーとスクロールするページコンテンツを作成し、CSSではお知らせバーの固定位置、色、文字サイズ、表示・非表示時の動きを設定します。JavaScriptではページのスクロール位置を取得し、上から300px以上スクロールするとお知らせバーを表示します。300pxより上へ戻ると、お知らせバーは自動的に非表示になります。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはお知らせバーとページコンテンツを構成するファイルです。「スクロールすると表示されるお知らせです」の部分を変更すると、お知らせバーへ表示する文章を変更できます。index.htmlからstyle.cssとscript.jsを読み込んで動作します。
style.cssはお知らせバーとページコンテンツのデザインを設定するファイルです。お知らせバーをposition:fixed;とtop:0;で画面上部へ固定し、通常時はtransform:translateY(-100%);で画面の外側へ隠しています。is-showクラスが追加されるとtranslateY(0)へ切り替わり、画面上部へ表示されます。
script.jsはスクロール位置を判定するファイルです。ページ上部から300px以上スクロールするとis-showクラスを追加してお知らせバーを表示し、300pxより上へ戻るとクラスを削除して非表示にします。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。ページを下へ300px以上スクロールすると画面上部からお知らせバーが表示されます。そのまま上へスクロールして300pxより上の位置へ戻ると、お知らせバーは再び画面上部へ移動して非表示になります。
カスタマイズできる内容
index.htmlではお知らせバーへ表示する文章を変更できます。style.cssではお知らせバーの背景色、文字色、文字サイズ、余白、表示・非表示が切り替わる速度などを変更できます。script.jsでは、お知らせバーを表示する基準となるスクロール位置を変更できます。
数値調整
style.css
padding:14px 20px;
お知らせバーの内側余白です。14pxは上下、20pxは左右の余白です。値を大きくするとバーの内側に余裕ができ、小さくするとコンパクトになります。
font-size:16px;
お知らせバーの文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。
transition:transform .3s ease;
お知らせバーが画面上部へ出入りする時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。
max-width:700px;
ページコンテンツの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
ページコンテンツの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
ページコンテンツの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
ページコンテンツの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。
min-height:900px;
スクロール確認用コンテンツの最低高さです。値を大きくするとページが長くなり、スクロールできる距離が増えます。
script.js
const scrollNoticeBarPosition=300;
お知らせバーを表示するスクロール位置です。300はページ上部から300pxを表します。値を大きくすると、より下までスクロールしてから表示され、小さくすると早い段階で表示されます。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxにより、ページコンテンツは画面幅に合わせて縮小されます。お知らせバーもwidth:100%で画面の横幅いっぱいに表示されます。また、640px以下ではお知らせバーをpadding:12px 18px;、font-size:14px;へ変更し、ページコンテンツもmargin:24px auto;、padding:24px 18px;へ変更するため、スマートフォン・タブレット・PCで利用できます。
コメント