3D Cube with cards on each face. CSS only checkbox hack for rotations.
A Pen by MOZZARELLA on CodePen.
3D Cube with cards on each face. CSS only checkbox hack for rotations.
A Pen by MOZZARELLA on CodePen.
| <div class="container-3D"> | |
| <input type="radio" id="swap-left-front" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-front" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-front" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-front" name="swapper" value="swap-down"> | |
| <input type="radio" id="swap-left-back" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-back" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-back" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-back" name="swapper" value="swap-down"> | |
| <input type="radio" id="swap-left-top" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-top" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-top" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-top" name="swapper" value="swap-down"> | |
| <input type="radio" id="swap-left-bottom" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-bottom" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-bottom" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-bottom" name="swapper" value="swap-down"> | |
| <input type="radio" id="swap-left-left" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-left" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-left" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-left" name="swapper" value="swap-down"> | |
| <input type="radio" id="swap-left-right" name="swapper" value="swap-left"> | |
| <input type="radio" id="swap-right-right" name="swapper" value="swap-right"> | |
| <input type="radio" id="swap-up-right" name="swapper" value="swap-up"> | |
| <input type="radio" id="swap-down-right" name="swapper" value="swap-down"> | |
| <div class="flopper"> | |
| <figure class="back"> | |
| <label for="swap-left-back">←</label> | |
| <label for="swap-right-back">→</label> | |
| <label for="swap-up-back">↑</label> | |
| <label for="swap-down-back">↓</label> | |
| <div></div> | |
| <h2>Palace</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| <figure class="top"> | |
| <label for="swap-left-top">←</label> | |
| <label for="swap-right-top">→</label> | |
| <label for="swap-up-top">↑</label> | |
| <label for="swap-down-top">↓</label> | |
| <div></div> | |
| <h2>Tools</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| <figure class="bottom"> | |
| <label for="swap-left-bottom">←</label> | |
| <label for="swap-right-bottom">→</label> | |
| <label for="swap-up-bottom">↑</label> | |
| <label for="swap-down-bottom">↓</label> | |
| <div></div> | |
| <h2>Clouds</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| <figure class="left"> | |
| <label for="swap-left-left">←</label> | |
| <label for="swap-right-left">→</label> | |
| <label for="swap-up-left">↑</label> | |
| <label for="swap-down-left">↓</label> | |
| <div></div> | |
| <h2>Birds</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| <figure class="right"> | |
| <label for="swap-left-right">←</label> | |
| <label for="swap-right-right">→</label> | |
| <label for="swap-up-right">↑</label> | |
| <label for="swap-down-right">↓</label> | |
| <div></div> | |
| <h2>Concert</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| <figure class="front"> | |
| <label for="swap-left-front">←</label> | |
| <label for="swap-right-front">→</label> | |
| <label for="swap-up-front">↑</label> | |
| <label for="swap-down-front">↓</label> | |
| <div></div> | |
| <h2>Big Water</h2> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> | |
| <a href="javascript:void(0);" title="Learn More">Learn More</a> | |
| </figure> | |
| </div> | |
| </div> |
| *, | |
| *::before, | |
| *::after { | |
| box-sizing: border-box; | |
| font-family: "Poppins", sans-serif; | |
| transform-style: preserve-3d; | |
| } | |
| body, | |
| html { | |
| -webkit-text-size-adjust: 100%; | |
| -webkit-tap-highlight-color: transparent; | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| font-size: 12pt; | |
| line-height: 18pt; | |
| font-weight: 400; | |
| color: white; | |
| } | |
| body { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| width: 100vw; | |
| height: 100vh; | |
| overflow: hidden; | |
| background: #444; | |
| margin: 0; | |
| } | |
| .container-3D { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| width: 300px; | |
| height: 300px; | |
| } | |
| .flopper { | |
| position: relative; | |
| width: auto; | |
| height: auto; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: visible; | |
| transition: all 0.5s ease-in-out; | |
| /*animation: rotate 6s linear infinite;*/ | |
| } | |
| figure { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| position: absolute; | |
| width: 300px; | |
| height: 300px; | |
| transform-origin: 50% 50%; | |
| padding: 20px 25px; | |
| box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 2px, rgba(0, 0, 0, 0.07) 0px 2px 4px, | |
| rgba(0, 0, 0, 0.07) 0px 4px 8px, rgba(0, 0, 0, 0.07) 0px 8px 16px, | |
| rgba(0, 0, 0, 0.07) 0px 16px 32px, rgba(0, 0, 0, 0.07) 0px 32px 64px; | |
| border: 1px solid white; | |
| } | |
| figure div { | |
| width: 100%; | |
| height: 100px; | |
| background: url("https://picsum.photos/id/237/1280/720"); | |
| background-size: cover !important; | |
| background-position: center !important; | |
| background-repeat: no-repeat !important; | |
| } | |
| .front div { | |
| background: url("https://picsum.photos/id/404/1280/720"); | |
| } | |
| .left div { | |
| background: url("https://picsum.photos/id/611/1280/720"); | |
| } | |
| .right div { | |
| background: url("https://picsum.photos/id/117/1280/720"); | |
| } | |
| .back div { | |
| background: url("https://picsum.photos/id/142/1280/720"); | |
| } | |
| .bottom div { | |
| background: url("https://picsum.photos/id/888/1280/720"); | |
| } | |
| .top div { | |
| background: url("https://picsum.photos/id/491/1280/720"); | |
| } | |
| figure h2 { | |
| font-size: 20pt; | |
| line-height: 20pt; | |
| margin: 20px 0px 10px 0px; | |
| } | |
| figure p { | |
| font-size: 12pt; | |
| line-height: 18pt; | |
| margin: 0 0 15px 0; | |
| text-align: center; | |
| } | |
| figure a { | |
| position: relative; | |
| width: 130px; | |
| height: 40px; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| background: white; | |
| color: black; | |
| text-decoration: none; | |
| z-index: 1; | |
| overflow: hidden; | |
| transition: all 0.3s ease-in-out; | |
| } | |
| figure a::after { | |
| position: absolute; | |
| content: ""; | |
| bottom: 100%; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: black; | |
| z-index: -1; | |
| transition: all 0.3s ease-in-out; | |
| } | |
| figure a:hover::after { | |
| bottom: 0; | |
| transition: all 0.3s ease-in-out; | |
| } | |
| figure a:hover { | |
| color: white; | |
| transition: all 0.3s ease-in-out; | |
| } | |
| .front { | |
| transform: translateZ(150px); | |
| background: #1be7ff; | |
| --face_color: #1be7ff; | |
| } | |
| .back { | |
| transform: rotateY(180deg) translateZ(150px); | |
| background: #6eeb83; | |
| --face_color: #6eeb83; | |
| } | |
| .top { | |
| transform: rotateX(90deg) translateZ(150px); | |
| background: #e4ff1a; | |
| --face_color: #e4ff1a; | |
| } | |
| .bottom { | |
| transform: rotateX(-90deg) translateZ(150px); | |
| background: #e8aa14; | |
| --face_color: #e8aa14; | |
| } | |
| .left { | |
| transform: rotateY(-90deg) translateZ(150px); | |
| background: #ff5714; | |
| --face_color: #ff5714; | |
| } | |
| .right { | |
| transform: rotateY(90deg) translateZ(150px); | |
| background: black; | |
| --face_color: black; | |
| } | |
| .front h2, | |
| .front p, | |
| .back h2, | |
| .back p, | |
| .top h2, | |
| .top p, | |
| .bottom h2, | |
| .bottom p { | |
| color: black; | |
| } | |
| .front a, | |
| .back a, | |
| .top a, | |
| .bottom a { | |
| background: black; | |
| color: white; | |
| } | |
| .front a::after, | |
| .back a::after, | |
| .top a::after, | |
| .bottom a::after { | |
| background: white; | |
| } | |
| .front a:hover, | |
| .back a:hover, | |
| .top a:hover, | |
| .bottom a:hover { | |
| color: black; | |
| } | |
| label { | |
| position: absolute; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| width: 40px; | |
| height: 40px; | |
| background: var(--face_color); | |
| color: black; | |
| font-size: 14pt; | |
| margin: 0; | |
| padding: 0; | |
| box-shadow: rgba(0, 0, 0, 0.4) 0px 2px 4px, | |
| rgba(0, 0, 0, 0.3) 0px 7px 13px -3px, rgba(0, 0, 0, 0.2) 0px -3px 0px inset; | |
| backface-visibility: hidden; | |
| -webkit-backface-visibility: hidden; | |
| } | |
| label:hover { | |
| cursor: pointer; | |
| } | |
| label:nth-child(1) { | |
| left: -55px; | |
| padding-bottom: 5px; | |
| } | |
| label:nth-child(2) { | |
| right: -55px; | |
| padding-bottom: 5px; | |
| } | |
| label:nth-child(3) { | |
| top: -55px; | |
| } | |
| label:nth-child(4) { | |
| bottom: -55px; | |
| } | |
| .right label { | |
| color: white; | |
| } | |
| .left label { | |
| color: white; | |
| } | |
| #swap-left-front:checked ~ .flopper { | |
| transform: rotateY(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-front:checked ~ .flopper { | |
| transform: rotateY(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-front:checked ~ .flopper { | |
| transform: rotateX(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-front:checked ~ .flopper { | |
| transform: rotateX(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-left-back:checked ~ .flopper { | |
| transform: rotateY(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-back:checked ~ .flopper { | |
| transform: rotateY(-270deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-back:checked ~ .flopper { | |
| transform: rotateX(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-back:checked ~ .flopper { | |
| transform: rotateX(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-left-top:checked ~ .flopper { | |
| transform: rotateY(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-top:checked ~ .flopper { | |
| transform: rotateY(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-top:checked ~ .flopper { | |
| transform: rotateY(-180deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-top:checked ~ .flopper { | |
| transform: rotateX(0deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-left-bottom:checked ~ .flopper { | |
| transform: rotateY(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-bottom:checked ~ .flopper { | |
| transform: rotateY(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-bottom:checked ~ .flopper { | |
| transform: rotateX(0deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-bottom:checked ~ .flopper { | |
| transform: rotateY(180deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-left-left:checked ~ .flopper { | |
| transform: rotateY(180deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-left:checked ~ .flopper { | |
| transform: rotateY(-360deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-left:checked ~ .flopper { | |
| transform: rotateX(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-left:checked ~ .flopper { | |
| transform: rotateX(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-left-right:checked ~ .flopper { | |
| transform: rotateY(0deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-right-right:checked ~ .flopper { | |
| transform: rotateY(-180deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-up-right:checked ~ .flopper { | |
| transform: rotateX(-90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| #swap-down-right:checked ~ .flopper { | |
| transform: rotateX(90deg); | |
| transition: all 0.5s ease-in-out; | |
| } | |
| input { | |
| display: none; | |
| } | |
| @keyframes rotate { | |
| 0% { | |
| transform: rotateY(0deg) rotateX(0deg); | |
| } | |
| 50% { | |
| transform: rotateY(180deg) rotateX(30deg); | |
| } | |
| 100% { | |
| transform: rotateY(360deg) rotateX(0deg); | |
| } | |
| } | |
| @media (max-height: 435px), @media (max-width: 435px) { | |
| figure { | |
| width: 250px; | |
| height: 250px; | |
| } | |
| .front { | |
| transform: translateZ(125px); | |
| } | |
| .back { | |
| transform: rotateY(180deg) translateZ(125px); | |
| } | |
| .top { | |
| transform: rotateX(90deg) translateZ(125px); | |
| } | |
| .bottom { | |
| transform: rotateX(-90deg) translateZ(125px); | |
| } | |
| .left { | |
| transform: rotateY(-90deg) translateZ(125px); | |
| } | |
| .right { | |
| transform: rotateY(90deg) translateZ(125px); | |
| } | |
| figure div { | |
| height: 80px; | |
| } | |
| figure h2 { | |
| font-size: 18pt; | |
| line-height: 18pt; | |
| } | |
| figure p { | |
| font-size: 11pt; | |
| line-height: 15pt; | |
| } | |
| figure a { | |
| height: 60px; | |
| } | |
| label { | |
| width: 30px; | |
| height: 30px; | |
| font-size: 12pt; | |
| } | |
| label:nth-child(1) { | |
| left: -40px; | |
| } | |
| label:nth-child(2) { | |
| right: -40px; | |
| } | |
| label:nth-child(3) { | |
| top: -40px; | |
| } | |
| label:nth-child(4) { | |
| bottom: -40px; | |
| } | |
| } |
Francissimon