|
*, *:before, *:after { |
|
box-sizing: border-box; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
|
body { |
|
background: #1f1f1f; |
|
font-family: 'Open Sans', Helvetica, Arial, sans-serif; |
|
} |
|
|
|
$vertPad: 80px; |
|
$sidePad: 70px; |
|
|
|
$numOfEls: 5; |
|
$elMrg: 1%; |
|
|
|
$initAT: 1s; |
|
$initDelayStep: 0.1s; |
|
$fullInitAT: $initAT + $initDelayStep * ($numOfEls - 1); |
|
$moveAT: 0.6s; |
|
$expandAT: 0.7s; |
|
$expandDelay: 0.1s; |
|
$bgScaleAT: 0.8s; |
|
$fadeoutAT: $moveAT + $expandAT/2; |
|
$indexHoverAT: 0.5s; |
|
$closeBtnAT: 0.3s; |
|
$closeBtnLineDelay: 0.15s; |
|
$fullExpandAT: $moveAT + $expandDelay + $expandAT; |
|
$contentFadeinAT: 0.5s; |
|
|
|
@mixin elHover { |
|
.el:hover & { |
|
@content; |
|
} |
|
} |
|
|
|
@mixin elActive { |
|
.el.s--active & { |
|
@content; |
|
} |
|
} |
|
|
|
@mixin contInactive { |
|
.cont.s--inactive & { |
|
@content; |
|
} |
|
} |
|
|
|
@mixin contElActive { |
|
.cont.s--el-active & { |
|
@content; |
|
} |
|
} |
|
|
|
.cont { |
|
position: relative; |
|
overflow: hidden; |
|
height: 100vh; |
|
padding: $vertPad $sidePad; |
|
|
|
&__inner { |
|
position: relative; |
|
height: 100%; |
|
|
|
&:hover .el__bg:after { |
|
opacity: 1; |
|
} |
|
} |
|
} |
|
|
|
.el { |
|
$elW: (100% - $elMrg * ($numOfEls - 1)) / $numOfEls; |
|
$elMrgRel: percentage($elMrg / $elW); |
|
|
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: $elW; |
|
height: 100%; |
|
background: #252525; |
|
transition: transform $moveAT $expandAT, width $expandAT, opacity $moveAT $expandAT, z-index 0s $moveAT + $expandAT; |
|
will-change: transform, width, opacity; |
|
|
|
&:not(.s--active) { |
|
cursor: pointer; |
|
} |
|
|
|
&__overflow { |
|
overflow: hidden; |
|
position: relative; |
|
height: 100%; |
|
} |
|
|
|
&__inner { |
|
overflow: hidden; |
|
position: relative; |
|
height: 100%; |
|
transition: transform $initAT; |
|
|
|
@include contInactive { |
|
transform: translate3d(0,100%,0); |
|
} |
|
} |
|
|
|
&__bg { |
|
position: relative; |
|
width: calc(100vw - #{$sidePad * 2}); |
|
height: 100%; |
|
transition: transform $moveAT $expandAT; |
|
will-change: transform; |
|
|
|
&:before { |
|
content: ""; |
|
position: absolute; |
|
left: 0; |
|
top: -5%; |
|
width: 100%; |
|
height: 110%; |
|
background-size: cover; |
|
background-position: center center; |
|
transition: transform $initAT; |
|
transform: translate3d(0,0,0) scale(1); |
|
|
|
@include contInactive { |
|
transform: translate3d(0,-100%,0) scale(1.2); |
|
} |
|
|
|
@include elActive { |
|
transition: transform $bgScaleAT; |
|
} |
|
} |
|
|
|
&:after { |
|
$opacityAT: 0.5s; |
|
|
|
content: ""; |
|
z-index: 1; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: 100%; |
|
height: 100%; |
|
background: rgba(0,0,0,0.3); |
|
opacity: 0; |
|
transition: opacity $opacityAT; |
|
|
|
@include contElActive { |
|
transition: opacity $opacityAT $fullExpandAT; |
|
opacity: 1 !important; |
|
} |
|
} |
|
} |
|
|
|
&__preview-cont { |
|
z-index: 2; |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: 100%; |
|
height: 100%; |
|
transition: all 0.3s $fullInitAT - 0.2s; |
|
|
|
@include contInactive { |
|
opacity: 0; |
|
transform: translateY(10px); |
|
} |
|
|
|
@include contElActive { |
|
opacity: 0; |
|
transform: translateY(30px); |
|
transition: all 0.5s; |
|
} |
|
} |
|
|
|
&__heading { |
|
color: #fff; |
|
text-transform: uppercase; |
|
font-size: 18px; |
|
} |
|
|
|
&__content { |
|
z-index: -1; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: 100%; |
|
height: 100%; |
|
padding: 30px; |
|
opacity: 0; |
|
pointer-events: none; |
|
transition: all 0.1s; |
|
|
|
@include elActive { |
|
z-index: 2; |
|
opacity: 1; |
|
pointer-events: auto; |
|
transition: all $contentFadeinAT $fullExpandAT; |
|
} |
|
} |
|
|
|
&__text { |
|
text-transform: uppercase; |
|
font-size: 40px; |
|
color: #fff; |
|
} |
|
|
|
&__close-btn { |
|
|
|
z-index: -1; |
|
position: absolute; |
|
right: 10px; |
|
top: 10px; |
|
width: 60px; |
|
height: 60px; |
|
opacity: 0; |
|
pointer-events: none; |
|
transition: all 0s $closeBtnAT + $closeBtnLineDelay; |
|
cursor: pointer; |
|
|
|
@include elActive { |
|
z-index: 5; |
|
opacity: 1; |
|
pointer-events: auto; |
|
transition: all 0s $fullExpandAT; |
|
} |
|
|
|
&:before, |
|
&:after { |
|
content: ""; |
|
position: absolute; |
|
left: 0; |
|
top: 50%; |
|
width: 100%; |
|
height: 8px; |
|
margin-top: -4px; |
|
background: #fff; |
|
opacity: 0; |
|
transition: opacity 0s; |
|
|
|
@include elActive { |
|
opacity: 1; |
|
} |
|
} |
|
|
|
&:before { |
|
transform: rotate(45deg) translateX(100%); |
|
|
|
@include elActive { |
|
transition: all $closeBtnAT $fullExpandAT cubic-bezier(.72,.09,.32,1.57); |
|
transform: rotate(45deg) translateX(0); |
|
} |
|
} |
|
|
|
&:after { |
|
transform: rotate(-45deg) translateX(100%); |
|
|
|
@include elActive { |
|
transition: all $closeBtnAT $fullExpandAT + $closeBtnLineDelay cubic-bezier(.72,.09,.32,1.57); |
|
transform: rotate(-45deg) translateX(0); |
|
} |
|
} |
|
} |
|
|
|
&__index { |
|
overflow: hidden; |
|
position: absolute; |
|
left: 0; |
|
bottom: $vertPad * -1; |
|
width: 100%; |
|
height: 100%; |
|
min-height: 250px; |
|
text-align: center; |
|
font-size: 100vw / $numOfEls; |
|
line-height: 0.85; |
|
font-weight: bold; |
|
transition: transform $indexHoverAT, opacity $moveAT/2 $expandAT + $expandDelay + $moveAT; |
|
transform: translate3d(0,1vw,0); |
|
|
|
@include elHover { |
|
transform: translate3d(0,0,0); |
|
} |
|
|
|
@include contElActive { |
|
transition: transform $indexHoverAT, opacity $moveAT/2; |
|
opacity: 0; |
|
} |
|
|
|
&-back, |
|
&-front { |
|
position: absolute; |
|
left: 0; |
|
bottom: 0; |
|
width: 100%; |
|
} |
|
|
|
&-back { |
|
color: #2f3840; |
|
opacity: 0; |
|
transition: opacity $indexHoverAT/2 $indexHoverAT/2; |
|
|
|
@include elHover { |
|
transition: opacity $indexHoverAT/2; |
|
opacity: 1; |
|
} |
|
} |
|
|
|
&-overlay { |
|
overflow: hidden; |
|
position: relative; |
|
transform: translate3d(0,100%,0); |
|
transition: transform $indexHoverAT 0.1s; |
|
color: transparent; |
|
|
|
&:before { |
|
content: attr(data-index); |
|
position: absolute; |
|
left: 0; |
|
bottom: 0; |
|
width: 100%; |
|
height: 100%; |
|
color: #fff; |
|
transform: translate3d(0,-100%,0); |
|
transition: transform $indexHoverAT 0.1s; |
|
} |
|
|
|
@include elHover { |
|
transform: translate3d(0,0,0); |
|
|
|
&:before { |
|
transform: translate3d(0,0,0); |
|
} |
|
} |
|
} |
|
} |
|
|
|
@for $i from 0 to $numOfEls { |
|
&:nth-child(#{$i + 1}) { |
|
$x: (100% + $elMrgRel) * $i; |
|
transform: translate3d($x,0,0); |
|
transform-origin: $x + 50% 50%; |
|
|
|
@include contElActive { |
|
|
|
&:not(.s--active) { |
|
transform: scale(0.5) translate3d($x,0,0); |
|
opacity: 0; |
|
transition: transform $fadeoutAT, opacity $fadeoutAT; |
|
} |
|
} |
|
|
|
.el__inner { |
|
transition-delay: $initDelayStep * $i; |
|
} |
|
|
|
.el__bg { |
|
transform: translate3d($elW * $i * -1,0,0); |
|
|
|
&:before { |
|
transition-delay: 0.1s * $i; |
|
background-image: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/onepgscr-#{$i + 3}.jpg'); |
|
} |
|
} |
|
} |
|
} |
|
|
|
&:hover { |
|
|
|
.el__bg:after { |
|
opacity: 0; |
|
} |
|
} |
|
|
|
&.s--active { |
|
z-index: 1; |
|
width: 100%; |
|
transform: translate3d(0,0,0); |
|
transition: transform $moveAT, width $expandAT $moveAT + $expandDelay, z-index 0s; |
|
|
|
.el__bg { |
|
transform: translate3d(0,0,0); |
|
transition: transform $moveAT; |
|
|
|
&:before { |
|
transition-delay: $moveAT; |
|
transform: scale(1.1); |
|
} |
|
} |
|
} |
|
} |
|
|
|
.icon-link { |
|
position: absolute; |
|
left: 5px; |
|
bottom: 5px; |
|
width: 32px; |
|
|
|
img { |
|
width: 100%; |
|
vertical-align: top; |
|
} |
|
|
|
&--twitter { |
|
left: auto; |
|
right: 5px; |
|
} |
|
} |
I need help .. This code is not working