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); }