配置基点を指定することで、要素を重ねて表示できるようになる。
要素を固定することもできる。(ノンスクロール)
画像の配置に使われることが多い
absolute:絶対位置
relative:相対位置
fixed:絶対位置+固定
static:初期値。上の3つを指定解除したい時に。
言葉だけじゃ難しいね・・・。図説をみてみよう~
親(ひとつ外側のボックス)の上角を基点にして(もしくは、下角)そこからの距離で指定する方法。
親ボックス以外の他のボックス要素から影響を一切受けない。絶対に親の角が基準となるから’絶対位置’
親ボックスに「position:static以外」を指定をして(たいていはrelativeでOK)、そのなかの子に
position:absolute指定をする。「top」「bottom」「left」「right」の値で、親ボックスからの距離を指定。
親ボックスを指定しなければ「ブラウザウィンドウ」が親になる。
結論から言うと、親ボックスが「ブラウザウィンドウ」で充分な場合が多い。
(外側のボックスにposition指定しなくていい)
下からの距離で指定したい時は、bodyに次ぐ一番大きなボックスを親にすると、ベター。
使い方↓
右図のように、 #outlineボックスを親に指定して
#submenuボックスを絶対位置指定。
HTMLでは#outlineボックスの最下部に#submenuを書けばよい。
このとき親ボックス#outlineは、特に絶対位置(absolute)や
固定位置(fixed)にする必要もないので、relativeに指定。
#bannerボックスを#sideの一番下に配置したい時は、
親は#outlineか#side。
#mainは、内容の量によって高さが変わるので、
親は#outlineにしておくのが無難。
親ボックスを指定しない場合は。。
右図のように、topは親であるウィンドウのtopから配置。
左右の位置は、HTML記述上の親になっている#outlineから
margin-leftで指定できる。
親ボックスを指定しなくて良い場合はしないほうがよいみたい。
position:absoluteを指定したいボックスが複数になったとき、
前にした親ボックス指定が障害になるなど混乱するから。
下に続く要素はabsoluteを指定したボックスが存在しないものとして配置される。
つまり、ブラウザの見た目上、空白になった部分へ詰めて表示される。
floatとの併用はできない。 図説↓
<body>
<div 白いボックス>
<div 青いボックス></div>
<div 緑のボックス></div>
<div 赤いボックス></div>
</div>
</body>
左のそれぞれのボックスは
上記のようにソースで書いてある
positionを設定してなければ、
この順番通り、
青いボックス
緑のボックス
赤いボックス
と表示される。
←ブラウザウィンドウ
←基準(親)ボックス‥position:relative
←top100px,left50pxで絶対位置指定
←bottom50px,right50pxで絶対位置指定
←positionを指定していない
各ボックスに
上記のようなpositionを指定したのが
最左の図。
青、緑のボックスの下に配置されるはずの
赤ボックスが、1番上に配置されてます。
青、緑ボックスにabsoluteを指定したので、
空白になった空間を詰めるように、
position指定してない赤ボックスが上部
に配置されたんですねー。
=メモ=
絶対位置って、どんな時に使うか。
「レイアウト的には上の方にしたいが、重要度は低いのでHTMLでは下の方に置きたい」
「float以外で複数のボックスを並べたい」時や、「複数の写真を並べた上にタイトル文字を置きたい」
などに使用すると便利。