CSSだけで作る3Dの立方体が回転するようなアニメーションによるコンテンツ切り替えタブです。右側のタブをクリックすると、左側がアニメーションしながら切り替わります。三者択一のタブボタンは「input type="radio"」が使われています。
THIS IS AWESOME
THIS IS COOL
THIS IS SWEET
<div class="perspective">
<label class="tab" for="tab-top">TOP</label>
<label class="tab" for="tab-front">FRONT</label>
<label class="tab" for="tab-bottom">BOTTOM</label>
<input type="radio" name="tabs" id="tab-top">
<input type="radio" name="tabs" id="tab-front">
<input type="radio" name="tabs" id="tab-bottom">
<div class="cube">
<div class="tab-content">
<h1>TOP CONTENT</h1>
<p>THIS IS AWESOME</p>
</div>
<div class="tab-content">
<h1>FRONT CONTENT</h1>
<p>THIS IS COOL</p>
</div>
<div class="tab-content">
<h1>BOTTOM CONTENT</h1>
<p>THIS IS SWEET</p>
</div>
</div>
</div>
.perspective {
-webkit-perspective: 76em;
perspective: 76em;
-webkit-perspective-origin: 50% 50px;
perspective-origin: 50% 50px;
width: 494px;
margin: 0 auto;
font-family: 'Roboto', sans-serif;
font-weight: 100;
color: #fff;
text-align: center;
}
input {
display: none;
}
.tab {
position: absolute;
width: 80px;
height: 70px;
background: pink;
right: 0;
line-height: 70px;
font-weight: 300;
}
.tab:nth-child(1) {
top: -5px;
background: #06D6A0;
}
.tab:nth-child(2) {
top: 69px;
background: #1B9AAA;
}
.tab:nth-child(3) {
top: 143px;
background: #EF476F;
}
.cube {
position: relative;
margin: 60px auto 0;
width: 300px;
height: 200px;
-webkit-transform-origin: 0 100px;
transform-origin: 0 100px;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transition: -webkit-transform 0.5s ease-in;
transition: -webkit-transform 0.5s ease-in;
transition: transform 0.5s ease-in;
transition: transform 0.5s ease-in, -webkit-transform 0.5s ease-in;
}
.tab-content {
width: 300px;
height: 200px;
position: absolute;
}
.tab-content h1 {
font-size: 25px;
margin: 75px 0 10px;
font-weight: 300;
}
.tab-content p {
font-size: 12px;
}
.tab-content:nth-child(2) {
-webkit-transform: translateZ(100px);
transform: translateZ(100px);
background: #1B9AAA;
}
.tab-content:nth-child(1) {
-webkit-transform: rotateX(-270deg) translateY(-100px);
transform: rotateX(-270deg) translateY(-100px);
-webkit-transform-origin: top left;
transform-origin: top left;
background: #06D6A0;
}
.tab-content:nth-child(3) {
-webkit-transform: rotateX(-90deg) translateY(100px);
transform: rotateX(-90deg) translateY(100px);
-webkit-transform-origin: bottom center;
transform-origin: bottom center;
background: #EF476F;
}
#tab-top:checked ~ .cube {
-webkit-transform: rotateX(-90deg);
transform: rotateX(-90deg);
}
#tab-front:checked ~ .cube {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
}
#tab-bottom:checked ~ .cube {
-webkit-transform: rotateX(90deg);
transform: rotateX(90deg);
}