【CSS】position: stickyとは?使い方 / よくある失敗の解決方法

【CSS】position: stickyとは?使い方 / よくある失敗の解決方法

投稿者の画像

小林祐也

2024.10.22

1. position: stickyとは?

CSSのposition: stickyは、要素がスクロールに応じて動き、指定された範囲内で固定されるようにするプロパティです。
staticやabsolute、fixedなど他のpositionプロパティと異なり、スクロールに合わせて動くという動的な特性を持っています。

position: stickyを使うと、ナビゲーションバーや見出しなどをスクロールに合わせて一時的に固定することが可能です。

position: stickyの構文

.element { position: sticky; top: 0; }

この例では、.elementがスクロールされてページの上部(top: 0)に到達すると、画面に固定されます。

2. 他のpositionとの違い

position: stickyは、スクロール中に要素を「特定の位置に一時的に固定」するという点で他のpositionプロパティと異なります。

  • static: デフォルトの配置、ページの流れに従って配置される。
  • relative: 元の位置を基準に、相対的な位置を指定できる。
  • absolute: 親要素に基づいて、自由に配置ができる。
  • fixed: ページ全体に対して固定され、スクロールしても動かない。

position: stickyはこの中間的な動作を持ち、スクロールにより要素が動き、指定位置に達すると固定されます。

3. position: stickyの基本的な使い方

position: stickyを正しく使うためには、以下のポイントを押さえておく必要があります。

  1. スクロール領域が必要
    Stickyが効果を発揮するためには、要素がスクロールされるコンテキストが必要です。親要素に適切なスクロール領域を設けることが重要です。
  2. 固定位置の指定
    top, right, bottom, leftのいずれかの値を指定することで、どの位置で固定するかを決定します。

例: ナビゲーションバーを固定

nav { position: sticky; top: 0; background-color: #fff; z-index: 1000; }

このコードでは、ナビゲーションバーがページの上部に固定され、スクロール中も常に見える状態になります。

4. position: stickyを使った実践例

見出しを固定してユーザーの利便性を向上

長いページでは、セクションごとの見出しを固定することで、ユーザーが現在の位置を把握しやすくなります。

h2 { position: sticky; top: 10px; background-color: #f1f1f1; padding: 10px; }

この設定では、見出しがスクロールに応じて画面の上部に固定され、ユーザーにとってページのナビゲーションがしやすくなります。

サイドバーを固定してCTAを目立たせる

スクロールしてもサイドバーに固定されたCTA(Call to Action)ボタンを表示させることで、コンバージョン率を向上させることができます。

aside { position: sticky; top: 20px; }

5. ブラウザ対応状況

position: stickyは、ほとんどの最新のブラウザでサポートされていますが、一部の古いバージョンのブラウザでは正常に動作しない場合があります。

  • Google Chrome: バージョン56以降対応
  • Firefox: バージョン32以降対応
  • Safari: バージョン7以降対応
  • Edge: バージョン16以降対応

サポートされていない場合の対策

対応していないブラウザ向けには、JavaScriptによるポリフィルやGraceful Degradationを検討してください。

6. よくあるトラブルと解決策

親要素がoverflow: hiddenの場合

position: stickyは、親要素がoverflow: hiddenやoverflow: autoの場合に正しく動作しないことがあります。この場合、親要素にスクロール領域が設定されていないためです。

解決策: 親要素に適切なスクロール領域を設定し、overflowプロパティの確認を行いましょう。

Z-indexの設定が原因で表示が崩れる

他の要素と重なり合う場合、z-indexの値を調整して、要素が正しく表示されるようにしましょう。

.sticky-element { position: sticky; top: 0; z-index: 999; }

7. まとめ

position: stickyは、スクロールに合わせて要素を固定する便利なCSSプロパティです。ナビゲーションバーやCTAの配置に活用することで、ユーザーエクスペリエンスを向上させることができます。
正しい使い方を理解し、ブラウザ対応やよくあるトラブルに対処することで、さらに効果的なウェブデザインが実現できます。