CSSのpositionプロパティを理解する
positonプロパティをマスターすることで、好きな要素を好きな場所に配置したり、スクロールしても同じ位置に配置するような表示ができるようになります。
- positionプロパティの使い方と具体例
- 要素の絶対配置
- z-indexの使い方
をみていきましょう。
positionプロパティで要素の位置を変えよう
positionプロパティで指定できる値は次の通りです。
- static
- relative
- absolute
- fixed
positionプロパティの初期値はstatic。 relativeは、top,left,right,bottomなどと合わせて使うことで、通常通りのstaticの位置からずらすことができます。
position: relative;
top: 30px;
left: 30px;
なら、staticの位置から30pxずつ位置が変わります。
position: fixed; top: 30px; left: 30px; fixedの場合は固定されます。
また、上の例だと左上から30pxずつのところが位置となります。スクロールしてもついてくる仕様になります。
またfixedにすると、要素が浮いた状態になり、その下のものは詰めて表示されます。
<div class="box1">Box 1</div>
<div class="box2">Box 2</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
.box1 {
background-color: orange;
width: 100px;
height: 100px;
}
.box2 {
background-color: skyblue;
width: 100px;
height: 100px;
/* position: static; */
/* position: relative; */
position: fixed;
top: 30px;
left: 30px;
}
.box3 {
background-color: tomato;
width: 100px;
height: 100px;
}
要素の絶対配置
position:absoluteにすることで要素を絶対配置することができます。
このposition:absoluteは子要素に適用します。 親要素がstaticかそれ以外かで挙動が変化するのもポイントです。
親要素がstaticの場合 親要素がstaticの場合、左上から30pxずつとなります。
親要素をrelativeの場合 親要素をrelativeにすると、親要素の左上を基準として30pxずつの位置に配置されます。
右上にちょこんとラベルを載せたいというときは、 position: absolute;を指定した子要素の数値のtopとrightをマイナス数値をいれてあげることで実現できます。
top: -5px;
right: -5px;
<div class="box1">Box 1</div>
<div class="box2">
<!-- Box 2 -->
<div class="rect"></div>
</div>
<div class="box3">Box 3</div>
<div class="box3">Box 3</div>
.box1 {
background-color: orange;
width: 100px;
height: 100px;
}
.box2 {
background-color: skyblue;
width: 100px;
height: 100px;
/* position: static; */
position: relative;
}
.box3 {
background-color: tomato;
width: 100px;
height: 100px;
}
.rect {
width: 50px;
height: 20px;
background-color: lime;
position: absolute;
/* top: 30px;
left: 10px; */
top: -5px;
right: -5px;
}
z-indexで重なり順を操作する
z-indexは、要素の重ね合わせを制御できます。
何も書かなければ、あとに書いた要素が上にきます。
z-indexを利用することで、値を大きいものを上にもってくることができる。 まずは簡単にこの触り部分だけ知っておくといいでしょう。