LoginSignup
0
0

【CSS】position:relative, absolute, fixed, stickyの違い一覧表

Posted at

はじめに

  • positionは対象要素に設定するもの?親要素に設定するもの(例えばrelativeなど)?
  • 何を基準に位置指定されるの?

よく分からなかったので以下を参考に整理してみました。一覧表のみです。実際のCSSの書き方や挙動については他を参照願います。

position - CSS: カスケーディングスタイルシート | MDN
レイアウトと包含ブロック - CSS: カスケーディングスタイルシート | MDN
Layout and the containing block - CSS: Cascading Style Sheets | MDN

一覧表

- 位置指定要素
相対位置
指定要素
絶対位置指定要素 粘着位置
指定要素
static
(初期値)
relative absolute fixed sticky
配置 通常のフローに従って配置(ページレイアウト内に通常のフローに従って要素が配置されたときの空間が作成される) 文書の通常のフローから除外(ページレイアウト内に要素のための空間が作成されない) relativeに同じ
包括ブロック 直感イメージ 直近のブロック要素のコンテンツ領域 直近の位置指定要素のパディング領域。なければ表示画面 表示画面 relativeに同じ
詳細 親ノードからルートノードまでを遡っていったときに最初に出てくるブロックコンテナー要素または整形コンテキストを確立する要素のコンテンツ領域 ・親ノードからルートノードまでを順に遡っていったときに最初に出てくる下表1~7のいずれか(fixedの場合1を除く)に該当する要素のパディング領域
・上記の該当要素がない場合は初期包括ブロック
relativeに同じ
topなどの設定時 基準 - 包括ブロック(直感としては通常配置時の自分自身) 包括ブロック 直近のスクロール要素および包括ブロック
%指定時の基準値(100%値) - height, top, bottom:包括ブロックのheight
width, left, right, padding, margin:包括ブロックのwidth
その他 top
left
bottom
right
は効果なし
- ・非置換要素の場合は、top、bottomを設定するとその間が埋まり、left、rightを設定するとその間が埋まる。
※heightやwidthがautoに限る。
・マージンは他要素のマージンと相殺されない。
- ・包含ブロックが閾値 に達するまでは相対的に配置。
・達してから包含ブロックの反対の端に来るまでは固定。
z-index 効果なし auto ではない場合、新しい重ね合わせコンテキストを作成 常に新しい重ね合わせコンテキストを作成
包括ブロックになりうる要素
1 positionがstatic以外(つまり位置指定要素
2 transformの値がnone以外
3 perspectiveの値がnone以外
4 will-changeの値がtransform又はperspective
5 containの値がlayout、paint、strict、contentのいずれか
6 backdrop-filterの値がnone以外
7 ブラウザがFirefoxでfilterの値がnone以外又はwill-changeの値がfilter
  • 初期包括ブロックビューポート (連続的なメディアの場合) またはページ領域 (ページメディアの場合) の寸法を持つ。
  • 重ね合わせコンテキストについてはこちらを参照。
  • マージンの相殺についてはこちらを参照。
  • ノードについてはこちらを参照。
  • stickyについては言葉では伝わりにくいのでこちらにある例を参照。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0