配置: relative、absolute、fixed、sticky
positionの値で要素を通常のフローから切り離し、コンテンツの重ね合わせ、ヘッダーの固定、スティッキーサイドバーを実現します。
「配置: relative、absolute、fixed、sticky」はCoddyKit上の無料Frontend Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFrontend Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Frontend Academyコースには全4レッスンが含まれています。
通常のドキュメントフロー
デフォルトでは、要素は通常のドキュメントフローに従います。ブロック要素は垂直方向に積み重なり、インライン要素はテキスト内で水平方向に流れます。positionプロパティを使うと、このフローから外れてオーバーレイ、固定ヘッダー、ツールチップなどを作成できます。
position: static(デフォルト)
すべての要素はposition: staticから始まります。これは、通常のドキュメントフローによって配置されることを意味します。top、right、bottom、leftプロパティは、static要素には効果がありません。
position: relative
position: relativeは要素を通常のフローに残したまま、top、right、bottom、leftを使って元の位置からずらすことを可能にします。重要なのは、絶対位置指定された子孫要素のための位置決めコンテキストを作成することです。
.card {
position: relative;
top: 10px; /* shift 10px down from original position */
left: -5px; /* shift 5px left */
}position: absolute
position: absolute は要素を通常のフローから外します。最も近い位置指定された祖先要素(static 以外の position が設定された要素)を基準に配置されます。位置指定された祖先要素がない場合は、ビューポートを基準にします。
.card {
position: relative; /* creates context */
}
.card .badge {
position: absolute;
top: 12px;
right: 12px; /* top-right corner of .card */
}z-indexプロパティ
位置指定された要素は重なり合うことがあります。z-index を使って重なり順を制御します。z-index が大きいほど上に表示されます。位置指定された要素(static 以外)でのみ機能し、新しいスタッキングコンテキストを作成します。
.tooltip {
position: absolute;
z-index: 100; /* above other content */
}
.modal {
position: fixed;
z-index: 1000; /* above tooltip */
}position: fixed
position: fixed は要素を通常のフローから外し、ビューポートに固定します。ページをスクロールしても一緒に移動しません。固定ヘッダー、フローティングアクションボタン、Cookie バナーなどに最適です。
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 64px;
background: white;
z-index: 50;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}position: sticky
position: sticky はハイブリッドな配置方法です。要素はしきい値(top または bottom で設定)に達するまでページと一緒にスクロールし、その後は固定されます。長いテーブルのセクション見出しや、ヘッダーを通過した後も固定されるサイドバーなどに便利です。
.sidebar {
position: sticky;
top: 80px; /* sticks 80px from top after scroll */
align-self: flex-start;
}position: absoluteで中央揃え
古典的な手法です。position: absolute; top: 50%; left: 50% と transform: translate(-50%, -50%) を組み合わせると、位置指定された親要素内で要素を正確に中央揃えできます。
.modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 480px;
background: white;
border-radius: 12px;
}overflow: hiddenでabsoluteの子要素を切り取る
absolute で位置指定された子要素は、デフォルトでは親要素の範囲からはみ出すことがあります。親要素に overflow: hidden を追加すると、ボックスの外側にある部分を切り取れます。カード画像のエフェクトやバッジの切り抜きに便利です。
注意点: 意図しないスタッキングコンテキスト
一部のプロパティは意図せずスタッキングコンテキストを作成します。たとえば transform、filter、isolation: isolate です。その結果、z-index が 9999 の要素でも、より低いスタッキングコンテキストの内側にあるため別の要素の背後に表示されるなど、z-index の競合が起こることがあります。
配置方法を使い分ける場面
relative: オフセットや位置指定コンテキストに使います。absolute: 親要素を基準にしたバッジ、ツールチップ、オーバーレイに使います。fixed: 常に表示するヘッダー、モーダル、トーストに使います。sticky: セクション見出しや、スクロールに追従するサイドバーナビゲーションに使います。レイアウトには position を使わず、Flex または Grid を使ってください。
クイックチェック
ある要素に position: absolute; top: 0; right: 0; が設定されています。親要素に position: relative が設定されている場合、どこに表示されますか?
まとめ: CSSの配置
static はデフォルトです。relative は通常のフローから外れずに位置をずらし、位置指定コンテキストを作成します。absolute は通常のフローから外れ、最も近い位置指定された祖先要素を基準に配置されます。fixed はビューポートに固定されます。sticky はスクロールした後に固定されます。重なり順の制御には z-index を使います。
よくある質問
「配置: relative、absolute、fixed、sticky」レッスンは無料ですか?
はい。「配置: relative、absolute、fixed、sticky」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Frontend Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Frontend Academyコースには全4レッスンが含まれています。
「配置: relative、absolute、fixed、sticky」で何を学びますか?
positionの値で要素を通常のフローから切り離し、コンテンツの重ね合わせ、ヘッダーの固定、スティッキーサイドバーを実現します。 ブラウザで直接実行するハンズオンコードでFrontend Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Frontend Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFrontend Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「配置: relative、absolute、fixed、sticky」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFrontend Academyレッスンでコードを書いて実行できますか?
はい。すべてのFrontend Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- セレクターとカスケード
- 色、タイポグラフィ、ボックスモデル
- display: block、inline、flex、gridの基礎
- 配置: relative、absolute、fixed、sticky