<body>
<main class="main">
<div class="signup-section">
<div class="signup-box">
<h1 class="main-heading">
Grab your Showbox!
</h1>
<p class="body-text">
Get the latest information and details on our brand new streaming movies platform!
</p>
<button class="signup-button">
Sign up today
</button>
</div>
</div>
<div class="cube__section">
<div class="cube">
<div class="cube__container">
<div class="cube__face cube__face--front">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/KP78n9EWQAje1fm6Xr02N6zm7V01xxNRNK?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIwODIzfQ._d_wNMzyykNR9_7lkgCpidj0JI4vCGuxfDKyEEfStO0" type="video/mp4">
</video>
</div>
<div class="cube__face cube__face--back">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/KefsniMdijw4at9fT02iUufbPceUuJJG2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIwNjcxfQ.3kzxKS0a6bQ2dCcKpTxeZS2IpVfUekVpMFrBzpBwA2M" type="video/mp4">
</video>
</div>
<div class="cube__face cube__face--left">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/34w86e7pqJzbji1yJ4gmfSanA01bjPyH7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIwNzYxfQ.xUJhNmkTYbzdHfVJsvVrtB4RFbn0cwaA7DRg9rEvMyU" type="video/mp4">
</video>
</div>
<div class="cube__face cube__face--right">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/8GSSdF02KLFPJQgkILrDCkRfHHuouBMVA?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIxMDMzfQ.Wk1guDwsEY_-Y1K8vo5FkU3GhutfkMA8PPxj4Afv5_w" type="video/mp4">
</video>
</div>
<div class="cube__face cube__face--top">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/EZvZIdsvOkc00V02BDw3ZnH4VdoJK01qSsS?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIxMTE4fQ.u6UFXCGSK755PtJtWoDAuFkasaQ7Tb2SbIXEGhFr4iw" type="video/mp4">
</video>
</div>
<div class="cube__face cube__face--bottom">
<video class="video__container" autoplay muted loop>
<source class="video__media" src="https://storage.coverr.co/videos/Vcve11Kp8bptZ00n1nsBEOh02qF5fgShYW?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjExNDMyN0NEOTRCMUFCMTFERTE3IiwiaWF0IjoxNTg4MDIwNDgwfQ.eI4Ak0fYiUzCRoLs2VdJZLea9e-zrjzJJ6RN1OFSim4" type="video/mp4">
</video>
</div>
</div>
</div>
</div>
</main>
</body>
/* CSS reset ==============================================*/
*,
*::after,
*::before {
box-sizing: inherit;
margin: 0;
padding: 0;
}
body {
box-sizing: border-box;
position: relative;
}
html {
/* formula: 1 rem = 10px; 10px/16px = 62.5% */
font-size: 62.5%;
}
/* Typography ================================================*/
* {
color: #eee;
font-family: "Open Sans", sans-serif;
}
/* Signup heading */
.main-heading {
font-size: 3.5rem;
padding-bottom: 2rem;
width: 40rem;
}
/* Signup text */
.body-text {
color: #eee;
font-family: "Open Sans", sans-serif;
font-size: 1.4rem;
font-weight: 300;
line-height: 2rem;
padding-bottom: 3rem;
}
/* Components ================================================*/
/* Signup button */
.signup-button {
background-color: transparent;
border: 2px solid #eee;
border-radius: 0.5rem;
color: #eee;
font-size: 1.5rem;
overflow: hidden;
padding: 1rem 2rem;
position: relative;
transition: all 0.2s ease-in-out;
z-index: 10;
}
.signup-button:hover {
color: #272829;
}
.signup-button::before {
background-color: #eee;
content: "";
height: 100%;
left: 0;
position: absolute;
top: 0;
transform: scaleX(0);
transition: all 0.2s ease-in-out;
width: 100%;
z-index: -1;
}
.signup-button:hover::before {
transform: scaleX(1);
}
/* Layout ================================================*/
.main {
align-items: center;
background: linear-gradient(to right bottom, #272829, #37383b, #272829);
display: flex;
flex-direction: row;
height: 100vh;
position: relative;
width: 100%;
}
/* Signup section (on left side) */
.signup-section {
align-items: center;
display: flex;
flex-direction: column;
height: 100%;
margin-left: 4rem;
justify-content: center;
width: 45%;
}
/* Container for heading, text, and button */
.signup-box {
width: 100%;
height: 55%;
}
/* Showbox cube section (on right side) */
.cube__section {
align-items: center;
display: flex;
height: 100vh;
justify-content: center;
width: 60%;
}
/* The cube - where the fun begins :) ===========================*/
/* The cube outer container */
.cube {
height: 20rem;
perspective: 60rem;
width: 20rem;
}
/* The cube's inner container */
/* Note: rotationBox keyframes is placed right at the end */
.cube__container {
animation: rotationBox 20s linear infinite forwards;
height: 100%;
position: relative;
transform: translateZ(-10rem);
transform-style: preserve-3d;
width: 100%;
}
/* This will target every single side of the cubez */
.cube__face {
align-items: center;
background-color: #eee;
display: flex;
height: 20rem;
justify-content: center;
overflow: hidden;
position: absolute;
width: 20rem;
}
/* This will target an individual side of the cube */
.cube__face--front {
transform: rotateY(0deg) translateZ(10rem);
}
.cube__face--back {
transform: rotateY(180deg) translateZ(10rem);
}
.cube__face--left {
transform: rotateY(-90deg) translateZ(10rem);
}
.cube__face--right {
transform: rotateY(90deg) translateZ(10rem);
}
.cube__face--top {
transform: rotateX(90deg) translateZ(10rem);
}
.cube__face--bottom {
transform: rotateX(-90deg) translateZ(10rem);
}
/* Videos ==============================================================*/
/* Specifically targeting the <video> element */
.video__container {
height: auto;
min-height: 100%;
object-fit: cover;
width: 100%;
}
/* Responsive ============================================================*/
/* Tablet */
@media only screen and (max-width: 48em) {
/* CSS Reset */
html {
font-size: 56.25%;
}
/* Typography */
/* Signup heading */
.main-heading {
width: 100%;
}
/* Layout */
.main {
flex-direction: column-reverse;
height: 100%;
}
/* Signup section (on left side) */
.signup-section {
height: 100%;
margin-left: 0;
width: 100%;
}
/* Container for heading, text, and button */
.signup-box {
height: 100%;
padding: 3rem 2rem;
text-align: center;
}
/* Showbox cube section (on right side) */
.cube__section {
height: 100vh;
width: 100%;
}
}
/* Mobile */
@media only screen and (max-width: 22.5em) {
/* Typography */
/* Signup text */
.body-text {
font-size: 1.8rem;
line-height: 2.8rem;
}
/* Layout */
/* Signup section (on left side) */
.signup-section {
height: 100%;
margin-left: 0;
width: 100%;
}
/* Container for heading, text, and button */
.signup-box {
height: 100%;
padding: 3rem;
padding-top: 1rem;
text-align: center;
}
/* Showbox cube section (on right side) */
.cube__section {
height: 60vh;
width: 100%;
}
/* The cube outer container */
.cube {
height: 15rem;
perspective: 60rem;
width: 15rem;
}
/* The cube's inner container */
.cube__container {
transform: translateZ(-7.5rem);
}
/* This will target every single side of the cubes */
.cube__face {
height: 15rem;
width: 15rem;
}
/* This will target an individual side of the cube */
.cube__face--front {
transform: rotateY(0deg) translateZ(7.5rem);
}
.cube__face--back {
transform: rotateY(180deg) translateZ(7.5rem);
}
.cube__face--left {
transform: rotateY(-90deg) translateZ(7.5rem);
}
.cube__face--right {
transform: rotateY(90deg) translateZ(7.5rem);
}
.cube__face--top {
transform: rotateX(90deg) translateZ(7.5rem);
}
.cube__face--bottom {
transform: rotateX(-90deg) translateZ(7.5rem);
}
}
/* Animation ============================================================*/
@keyframes rotationBox {
0% {
transform: rotate3d(0, 0, 0, 0deg);
}
25% {
transform: rotate3d(0, 1, 1, 90deg);
}
50% {
transform: rotate3d(1, 0, 1, 180deg);
}
75% {
transform: rotate3d(1, 1, 0, 240deg);
}
100% {
transform: rotate3d(1, 1, 1, 360deg);
}
}
// Showbox
// Showcasing a rotating 3D cube covered with videos for signup page of a fictional streaming movies service
// My original aim was to create a 3D cube that rotates slightly on hover. However, once I have achieved that goal, I have decided to take it further to the next level by having the cube rotating in different directions at all time, and each cube face will have a video placed across its surface.
// UPDATE: It is now responsive tp
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.