CSS「position」の使い方を完全マスター|初心者向けに図で徹底解説!

eyecatch128 WEB制作

こんにちは、SouDogです。

CSSの中でも「position」は多くの初心者が最初につまづくポイントの一つです。レイアウトを調整しようと思ったら思った通りに動かない、表示がおかしくなる……そんな経験をされた方も多いのではないでしょうか?

この記事では、CSSの「position」プロパティについて、初めての方でも理解できるように図解やサンプルコードを交えて丁寧に解説していきます。


1. positionとは何か?

positionプロパティは、要素の配置方法を指定するためのCSSプロパティです。これを使うことで、ページ内のどこに、どのように要素を配置するかをコントロールできます。

.example {
  position: relative;
  top: 20px;
  left: 30px;
}

このように、positionに値を指定し、toprightbottomleftなどのプロパティで実際の位置を設定します。


2. positionの5つの値をざっくり紹介

意味
static初期値(特別な位置指定をしない)
relative自分の元の位置を基準に移動できる
absolute一番近い”position指定された親要素”を基準に配置
fixedビューポート(画面)に対して固定される
stickyスクロール位置によって動いたり固定されたりする

3. static:デフォルトの位置指定

最も基本的な状態で、何もpositionを指定しないとstaticになります。

.example {
  /* position: static; ←書かなくてもこれが適用される */
}

この状態では、要素はHTMLで書かれた順番どおりに上から順に表示されます。topleftなどは無効になります。


4. relative:基準は自分自身

relativeは「自分が元々あった位置」を基準に移動できます。

.relative-box {
  position: relative;
  top: 10px;
  left: 20px;
}

この場合、元の場所から「下に10px、右に20px」ずれて表示されます。スペース自体は元の場所のままなので、他の要素のレイアウトには影響しません。

📝 補足図(イメージ)

[ 元の場所 ] → □
[ 表示位置 ] →     □(10px下、20px右)

5. absolute:基準は親要素

absoluteは「一番近いposition指定された親要素」を基準にして配置されます。

.wrapper {
  position: relative;
}
.child {
  position: absolute;
  top: 10px;
  left: 10px;
}

.wrapperrelativeなので、.child.wrapperの左上から10px・10pxの位置に配置されます。

📝 注意点:親要素にpositionが指定されていない場合、bodyを基準にしてしまうことがあり、意図しない位置に出てしまいます。


6. fixed:画面に固定表示

fixedはスクロールしても常に画面の同じ位置に固定されます。

.fixed-box {
  position: fixed;
  top: 0;
  right: 0;
}

たとえば「ページトップへ戻る」ボタンによく使われます。


7. sticky:スクロールに応じて動く

stickyrelativefixedの中間のような動きをします。

.sticky-box {
  position: sticky;
  top: 0;
}

ある程度までは普通にスクロールされ、設定した位置(ここではtop: 0)まで来たら、画面に固定されます。

📝 使用時の注意点:親要素にoverflow: hiddenなどがあると動作しません。


8. z-indexとの関係性

positionを使うときに関係してくるのがz-indexです。これは「前後関係(重なり順)」を決めるプロパティです。

.box1 {
  position: relative;
  z-index: 1;
}
.box2 {
  position: relative;
  z-index: 10;
}

数値が大きいほど上に表示されます。positionが指定されていないとz-indexは効きません。


9. よくあるつまづきポイントと解決策

  • absoluteが意図しない場所に出る
    • → 親要素にposition: relativeを付け忘れている
  • stickyが効かない
    • → 親要素の高さが足りない、overflowが関係している
  • fixedがスマホでずれる
    • → ビューポートの問題(meta viewportが必要)
  • z-indexが効かない
    • positionを指定していない

10. 実践!よく使うレイアウトパターン集

■ トップに固定するヘッダー

.header {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 999;
}

■ カード内のアイコンを右上に固定

.card {
  position: relative;
}
.card-icon {
  position: absolute;
  top: 10px;
  right: 10px;
}

■ スクロールに応じて固定されるサイドメニュー

.sidebar {
  position: sticky;
  top: 20px;
}

11. まとめ

  • positionは要素の配置に大きく関係する重要なプロパティ
  • 値によって動き方が大きく変わるため、実際に動かして理解するのが大切
  • relativeabsoluteの使い分けができれば、レイアウトの幅が広がる
  • stickyfixedも上手く使えば、より使いやすいUIが作れる

CSSのpositionをしっかり理解して、思い通りのデザインを実現していきましょう!

コメント