今回はweb製作に欠かせない、ボックスの配置を変更するposition
についてです。プロパティの指定方法などの基礎知識から使用例まで解説していきたいと思います。
そもそもpositionとは何なのか
ポジションという名前の通り、要素の場所を指定できるプロパティです。
- 要素を少しズラしたいとき
- 要素の位置を固定したい時
などに使用できる、汎用性の高い万能なプロパティです。その分少し癖があり、慣れるまでは難しいかもしれませんが、一つ一つ紐解いて行きましょう。
positionの使い方
.class {
position: 値;
}
position
のあとに指定する値は4種類しかあります。しかしそのうち1つはデフォルトで設定されているものなので覚えるべきプロパティは3種類です。
static | 初期値。 |
---|---|
relative | 相対位置への配置 |
absolute | 絶対位置への配置 |
fixed | スクロールしても固定される |
.class {
position: relative:
top: 10px; //上から10px
left: 50px; //左から50px
}
それぞれ、上から、右から、下から、左からの位置を指定することができるプロパティです。
top | 上からの位置 |
---|---|
right | 右からの位置 |
bottom | 下からの位置 |
left | 左からの位置 |
それでは、ここからはposition
のそれぞれのプロパティについて詳しく説明していきます。
position: static;
まずは初期値であるstatic
から。
BOX1を下に50px動かしたい場合、先ほどのステップに沿って考えるとコードはこうなるはずですが、実際にやってみると動きません。
<div class="box">BOX1</div>
.box {
position: static; //初期値なので書く必要はない
top: 50px;
}
static
は、分かりやすく言えば動かせないプロパティです。
z-indexも効かない
また、position
がstatic
のままだと、要素の重なり順を変更するz-index
も適用されません。
position: relative;
そこで登場するのがrelative
です。
relative
を使えば、現在の位置(本来表示される位置)から指定して動かすことができます。
.box {
position: relative;
}
.box {
position: relative;
top: 50px;
}
本来表示される位置(元々要素のあった位置)からtop
、bottom
、right
、left
をそれぞれ指定します。
position: absolute;
rerative
よりもっと柔軟に表現できるのがabsolute
です。absolute
を使用すれば、親要素に対しての位置を指定することができます。
<div class="box-parent">
<div class="box-child">child</div>
</div>
親要素box-parent
の中にbox-child
が入っているこちらを例にして説明します。
.box-parent {
position: relative;
}
.box-child {
position: absolute;
}
.box-parent {
position: relative;
}
.box-child {
position: absolute;
right: 30px;
bottom: 30px;
}
absolute
を使用すると、親要素にpadding
があっても無視されます。ただし、子要素にmargin
が指定されている場合は反映されるので注意してください。
position: fixed;
fixed
を指定すると、ウィンドウ全体からの位置で指定することができます。そして最大の特徴が、スクロールしても位置が変わりません。
よく使われるのがヘッダーやページトップへ戻るボタンです。当ブログでも使用しています。
.header{
position: fixed;
}
.page-top{
position: fixed;
}
.header{
position: fixed;
top: 0;
left: 0;
}
.page-top{
position: fixed;
right: 50px;
bottom : 50px;
}
fixed
と固定する位置を指定することにより、スクロールしても追従する要素の完成です!
まとめ
どこを基準にして移動させるかでrelative
、absolute
、fixed
を使い分けます。
relative | 本来ある位置から動かしたいとき |
---|---|
absolute | 親要素から指定して動かしたい時 |
fixed | ウィンドウ全体から指定して固定したい時 |
慣れてしまえば、おしゃれなレイアウトも思いのままに作ることができます。ぜひチャレンジしてみてください!