CSS辞書
比較記事一覧に戻る

position: absolute / fixed / sticky の違い

TL;DR — ひとことで言うと

祖先基準で自由配置がabsolute、画面に完全固定がfixed、「閾値まで通常・そこから貼り付き」がsticky。fixedはtransform等を持つ祖先がいると画面基準でなくなる罠があります。

比較表

観点absolutefixedsticky
配置の基準position指定のある最も近い祖先ビューポート(※transform等の祖先で変わる)最も近いスクロールコンテナと親要素の範囲
スクロール時ページと一緒に動く常に画面に固定閾値までは通常、以降は固定に切替
元のレイアウト領域抜ける(詰まる)抜ける残る
必須の相棒基準にする祖先のposition: relativeinset系での位置指定top等の閾値指定
典型用途バッジ、ドロップダウンヘッダー、FAB、モーダル目次、テーブルヘッダー、セクション見出し

使い分けの指針

stickyが効かない三大原因は「祖先のoverflow: hidden/auto」「top等の閾値未指定」「親の高さ不足」です。fixedが画面基準にならないときは祖先のtransform/filter/will-changeを疑ってください。単純な固定ヘッダーはstickyの方が領域が残る分、レイアウトが簡単なことも多いです。

🤖 AIがよくやる取り違え

AIはfixedのモーダルが祖先のtransformで壊れるケースをなかなか特定できません。「スタッキングコンテキストと包含ブロックの観点で調査して」と方向付けると速く解決します。

それぞれの詳しい解説