<div class="untitled">
<div class="untitled__slides">
<div class="untitled__slide">
<div class="untitled__slideBg"></div>
<div class="untitled__slideContent">
<span>London</span>
<span>Scout</span>
<a class="button" href="https://unsplash.com/@scoutthecity" target="/black">Unsplash Profile</a>
</div>
</div>
<div class="untitled__slide">
<div class="untitled__slideBg"></div>
<div class="untitled__slideContent">
<span>Vladimir</span>
<span>Kudinov</span>
<a class="button" href="https://unsplash.com/@madbyte" target="/black">Unsplash Profile</a>
</div>
</div>
<div class="untitled__slide">
<div class="untitled__slideBg"></div>
<div class="untitled__slideContent">
<span>Macio</span>
<span>Amorim</span>
<a class="button" href="https://unsplash.com/@maicoamorim" target="/black">Unsplash Profile</a>
</div>
</div>
<div class="untitled__slide">
<div class="untitled__slideBg"></div>
<div class="untitled__slideContent">
<span>Mario</span>
<span>Calvo</span>
<a class="button" href="https://unsplash.com/@mariocalvo" target="/black">Unsplash Profile</a>
</div>
</div>
</div>
<div class="untitled__shutters"></div>
</div>
$t: 2.5s;
$e1: cubic-bezier(0.8, 0.00, 0.1, 1);
$e2: cubic-bezier(0.600, 0.040, 0.980, 0.335);
$er: linear;
$color: hsl(15,75%,40%);
$font: 'Abril Fatface', sans-serif;
$slides: 4;
$images: url(https://unsplash.it/g/1500/2200?image=838) url(https://unsplash.it/g/1500/1000?image=1078) url(https://unsplash.it/g/1500/1000?image=1077) url(https://unsplash.it/g/1500/1200?image=345);
html, body{
width: 100vw;
height: 100vh;
overflow: hidden;
}
.untitled{
position: absolute;
height: 100%;
width: 100%;
@keyframes rotateHue {
0%{ filter: hue-rotate(0deg); }
20%{ filter: hue-rotate(0deg); }
25%{ filter: hue-rotate(90deg); }
45%{ filter: hue-rotate(90deg); }
50%{ filter: hue-rotate(180deg); }
70%{ filter: hue-rotate(180deg); }
75%{ filter: hue-rotate(270deg); }
95%{ filter: hue-rotate(270deg); }
100%{ filter: hue-rotate(360deg); }
}
animation: rotateHue infinite $t*$slides*2 linear;
animation-delay: $t/4;
&__shutters{
position: absolute;
height: 150vmax;
width: 150vmax;
left: calc(50% - 75vmax);
top: calc(50% - 75vmax);
pointer-events: none;
z-index: 2;
@keyframes rotateFrame{
0%{ transform: rotate(0deg);}
100%{ transform: rotate(180deg);}
}
animation: rotateFrame $t*4 $er infinite;
&:before, &:after{
content: '';
position: absolute;
height: 100%;
width: 100%;
left: 50%;
transform: translate3d(-50%, 0, 0);
background-color: $color;
pointer-events: auto;
}
&:before{
bottom: 50%;
@keyframes openTop{
0%{ transform: translate3d(-50%, 0, 0); animation-timing-function: $e1; }
40%{ transform: translate3d(-50%, -65vmax, 0); animation-timing-functon: $e2; }
70%{ transform: translate3d(-50%, -65vmax, 0); animation-timing-functon: $e2; }
100%{ transform: translate3d(-50%, 0, 0); animation-timing-function: $e2; }
}
animation: openTop $t*2 infinite;
}
&:after{
top: 50%;
@keyframes openBottom{
0%{ transform: translate3d(-50%, 0, 0); animation-timing-function: $e1; }
40%{ transform: translate3d(-50%, 65vmax, 0); animation-timing-functon: $e2; }
70%{ transform: translate3d(-50%, 65vmax, 0); animation-timing-functon: $e2; }
100%{ transform: translate3d(-50%, 0, 0); animation-timing-function: $e2; }
}
animation: openBottom $t*2 infinite;
}
}
&__slides{
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
background-color: $color;
}
&__slide{
position: absolute;
height: 100%;
width: 100%;
opacity: 0;
@keyframes showHideSlide{
0%{
opacity: 1;
pointer-events: auto;
z-index: 1;
}
#{100% / $slides}{
opacity: 0;
pointer-events: none;
z-index: -1;
}
100%{
opacity: 0;
pointer-events: none;
z-index: -1;
}
}
animation: showHideSlide infinite $t*$slides*2 steps(1);
@for $i from 1 through $slides{
&:nth-child(#{$i}){
animation-delay: $t * ($i - 1) * 2;
.untitled__slideBg{
background-image: nth($images, $i);
}
}
}
}
&__slideBg{
position: relative;
height: 100%;
width: 100%;
top: 0;
left: 0;
background-size: cover;
background-position: center;
background-color: $color;
background-blend-mode: hard-light;
opacity: 1;
z-index: -1;
@keyframes bgInOut{
0%{ transform: rotate(-45deg) scale(1.1); animation-timing-function: cubic-bezier(0.165, 0.840, 0.440, 1.000);}
33%{ transform: rotate(0deg);}
50%{ transform: rotate(0deg); }
66%{ transform: rotate(0deg); animation-timing-function: cubic-bezier(0.895, 0.030, 0.685, 0.220); }
100%{ transform: rotate(45deg) scale(0.9);}
}
animation: bgInOut $t*4 -$t*2 infinite;
}
&__slideContent{
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%,-50%,0);
color: white;
font-family: $font;
line-height: 0.8;
letter-spacing: -0.025em;
z-index: 2;
opacity: 1;
text-shadow: 0 0 0.5em rgba($color,0.25);
mix-blend-mode: lighten;
span{
display: block;
font-size: 15vmin;
}
}
}
.button{
font-family:'Roboto Mono', sans-serif;
text-decoration: none;
font-weight: 800;
text-transform: uppercase;
font-size: 2vmin;
display: inline-block;
position: relative;
border: 3px solid white;
box-shadow: -0.5vmin 0.5vmin 0 rgba(white, 0.5);
background: transparent;
margin-top: 5vmin;
mix-blend-mode: lighten;
color: white;
padding: 2vmin 2vmin 1.8vmin 2vmin;
letter-spacing: 0.1em;
text-shadow: none;
line-height: 1;
transform: translate3d(0.5vmin, -0.5vmin, 0);
transition: all 100ms linear;
&:hover{
transform: translate3d(1vmin, -1vmin, 0);
box-shadow: -1vmin 1vmin 0 rgba(white, 0.5);
background: white;
color: black;
}
&:active{
transform: translate3d(0px, 0px, 0);
box-shadow: -0px 0px 0 rgba(white, 0.5);
}
}
View Compiled
//Spark of inspiration came from this movie trailer:
// https://www.youtube.com/watch?v=qSpBnZa3Bek
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.