CSSで立体のキューブを作成する方法
CSSで立体のキューブを作成する方法を紹介します。
デモ
See the Pen
キューブの作成 by Sosak (@Sosak2021)
on CodePen.
HTML
<div class="container">
<div class="row">
<div class="cube">
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
SCSS
.container {
position: relative;
}
.row {
position: relative;
}
.cube {
position: relative;
width: 150px;
height: 150px;
& span {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
background: #ddd;
&:nth-child(1) {
clip-path: polygon(
50% 0%,
100% 25%,
50% 50%,
0 25%
); //ひし側の横長を手動で作成する
}
&:nth-child(2) {
clip-path: polygon(0 25%, 50% 50%, 50% 100%, 0 75%);
//ひし側の横長を手動で作成する
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.2);
clip-path: polygon(0 25%, 50% 50%, 50% 100%, 0 75%);
}
}
&:nth-child(3) {
clip-path: polygon(50% 50%, 100% 25%, 100% 75%, 50% 100%);
//ひし側の横長を手動で作成する
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.1);
clip-path: polygon(50% 50%, 100% 25%, 100% 75%, 50% 100%);
}
}
}
}
キューブの見えている部分は、四角形が3つ重なってできているので、spanタグをそれぞれの面に割り当てます。
clip-pathを使ってそれぞれのひし形を作成して、あとはくっつくように配置するだけです。