CSS - ボックスを重ねて表示する方法
ボックスを重ねて表示したい場合、 CSSの「position」プロパティを使います。
さらに、「z-index」プロパティを使うと、 重なる順番を指定することもできます。
ここでは、まずボックスを重ねて表示する方法を説明し、 次に重なる順番を指定する方法を紹介します。
ボックスを重ねて表示する
HTML
HTMLは次のようなシンプルな構造です。
「.box」を大枠とし、内側に「.red」「.blue」の2つのボックスがあります。
ここではボックスが重なる順番は特に指定していません。 その場合、後に記述したボックスが上に表示されます。
<div class="box">
<div class="red">red</div>
<div class="blue">blue</div>
</div>
CSS
CSSは少し長くなりますが、次の通り。 大事なのは赤字部分です。
/* 大枠 */
.box {
border: 1px solid silver;
position: relative;
width: 200px;
height: 200px;
}
.red, .blue{
position: absolute;
width: 100px;
height: 100px;
color: white;
padding: 5px;
}
.red {
background-color: red;
top: 10px;
left: 10px;
}
.blue {
background-color: blue;
bottom: 10px;
right: 10px;
}
上のCSSのコードを少しずつ見ていきます。
/* 大枠 */
.box {
position: relative;
他省略
}
大枠の「.box」に対して「position: relative;」を指定し、 内側の2つのボックスを自由に配置できるようにします。
.red, .blue{
position: absolute;
他省略
}
内側の2つのボックス「.red」「.blue」に対して「position: absolute;」を指定し、 絶対配置とします。
.red {
background-color: red;
top: 10px;
left: 10px;
}
ボックス「.red」の表示位置を top、left プロパティで指定。 topは上から、leftは左端からの距離を指定します。
.blue {
background-color: blue;
bottom: 10px;
right: 10px;
}
ボックス「.blue」の表示位置を bottom、right プロパティで指定。 bottomは下から、rightは右端からの距離を指定します。
ボックスの重なる順番を指定する
先程はボックスの重なる順番を指定しませんでした。 その結果、後から記述したボックス「.blue」が上に表示されました。
今回は、先に記述したボックス「.red」を上に表示してみます。
HTMLは先程と同じです。
CSSは先程のCSSに次の2点を追加します。
.red {
他省略
z-index: 2;
}
.blue {
他省略
z-index: 1;
}
「z-index」プロパティは、 「重なりあう要素のどちらを上に表示するか」を指定するプロパティです。 z-indexの値が大きい方が上に表示されます。
z-indexの値は1から順番に指定する必要はなく、次のようなアバウトな指定でも機能します。
.red {
他省略
z-index: 10;
}
.blue {
他省略
z-index: 5;
}
要は上に表示したい要素のz-indexの値の方が大きければOKです。
このように、「position」プロパティを使うことでボックスを重ねて表示し、 「top, bottm, left, right」プロパティで表示位置を指定します。
さらに「z-index」プロパティで重なる順番をコントロールすることができます。