(X)HTML 文書は通常、記述されたとおりの順番で上から表示されていくが、CSS の position プロパティを使用すれば、(X)HTML 文書の最後に記述した要素をページの先頭に表示することも可能です。
position プロパティはボックスの配置方法を決めるプロパティで、static (通常配置)、relative (相対配置)、absolute (絶対配置)、fixed (固定配置)の4つの値を指定できます。
position プロパティに指定できる値:
static 以外の値を指定した場合は、ある 「基点」 を中心として位置が決定されます。
position プロパティで指定するのは、配置方法 (基準位置) のみです。「基点」 からの距離は、 top、 bottom、 left、 right を併用して、これらの値によって決まります。
配置がどのようになるかを見るために、以下のような XHTML と CSS を用意した。
① を relative、absolute、fixed に変更してボックス"b" がどのように表示されるかを見てみる。ボックス"b"は BBB の文字列でライム色の背景色で表示されます。
上のソースを Web で表示した時の、ボックス"b"の配置の状況を絵解きで示します。
static
relative
absolute
fixed
position プロパティで static 以外の値を指定した場合、位置の指定によっては要素同士が重なることがあります。
要素の深度(重なり順序)を指定するには z-index プロパティを使用し、立体感を表現します。
z-index プロパティには正数値または auto、inherit を指定でき、正数値の値が大きいボックスほど前面に表示されます。値が同じ場合には、あとに出現したボックスが前面に表示されます。
auto の指定は、z-index 値の指定が無い場合と同様にソース内であとに記述されている要素が上に重ねられ前面に表示されます。
position プロパティを指定しない要素と指定した要素とでは、z-index 値の指定に関係なく、position プロパテイを指定した要素が前面に表示されます。
z-index を指定しない場合
z-index を指定した場合
position プロパティを利用すると、ある要素を基点として画像などの要素を配置できるため、位置の指定が直観的にできます。
また、float を使う場合とは異なり、あとから画像を追加することも簡単にできます。
あとから要素を追加するときにも効果を発揮
最初の段階では画像などの要素がなく、あとから要素を追加したいとなるケースもあります。これを float で実現しようとすると、関連する要素のスタイルを変更したり、後続要素のレイアウトを調整したりしなければならない。
しかし、position プロパティを使って配置する方法ならば、ほかの要素に手を加えることなく追加できます。
例えば右の図のように、ステッカー画像を右上隅に配置することができます。
ポイントは、画像のスタイルを相対配置 (position: relative;) にし、その子要素 (a 要素) を絶対配置 (position: absolute;) で指定していることです。
これにより、画像が本来配置される位置を基点として、a 要素の絶対配置の位置を top プロパティと right プロパティで調整できるようになります。
具体的なソースです。
具体的なスタイルの設定については、「ビルダーでのスタイルの設定と編集」 → 「画像のスタイルの設定」 → 「ステッカー画像を重ねる」 を参照ください。
左右中央の配置は、margin プロパティの値を 0 auto などとすることで容易に実現できますが、上下も中央に配置する場合、margin プロパティだけでは実現できません。
そこで、position プロパティと margin プロパティを併用して実現できます。
まずは、絶対位置指定を使用するために position プロパティの値を absolute とし、次に top プロパティと left プロパティの値を 50% に指定して、中央に基点を作ります。
このままだと、ボックスの左上が中心に配置され、レイアウトが右下にずれるので、調整が必要になります。
そこで、ボックスの縦横の長さ (width プロパティおよび height プロパティ) の半分の値を margin-top プロパティと margin-left プロパティに指定します。これでボックスを中央に配置できます。