// Carousels // The number of carousel images $carousel-number: 8; %carousel-image-checked { animation: carousel-slidein .75s ease-in-out 1; opacity: 1; z-index: $zindex-1; } %carousel-nav-checked { color: $gray-color-light; } .carousel { background: $bg-color; display: block; overflow: hidden; position: relative; width: 100%; -webkit-overflow-scrolling: touch; z-index: $zindex-0; .carousel-container { height: 100%; left: 0; position: relative; &::before { content: ""; display: block; padding-bottom: 56.25%; } .carousel-item { animation: carousel-slideout 1s ease-in-out 1; height: 100%; left: 0; margin: 0; opacity: 0; position: absolute; top: 0; width: 100%; &:hover { .item-prev, .item-next { opacity: 1; } } } .item-prev, .item-next { background: rgba($gray-color-light, .25); border-color: rgba($gray-color-light, .5); color: $gray-color-light; opacity: 0; position: absolute; top: 50%; transition: all .4s; transform: translateY(-50%); z-index: $zindex-1; } .item-prev { left: 1rem; } .item-next { right: 1rem; } } .carousel-locator { @for $i from 1 through ($carousel-number) { &:nth-of-type(#{$i}):checked ~ .carousel-container .carousel-item:nth-of-type(#{$i}) { @extend %carousel-image-checked; } } @for $i from 1 through ($carousel-number) { &:nth-of-type(#{$i}):checked ~ .carousel-nav .nav-item:nth-of-type(#{$i}) { @extend %carousel-nav-checked; } } } .carousel-nav { bottom: $layout-spacing; display: flex; justify-content: center; left: 50%; position: absolute; transform: translateX(-50%); width: 10rem; z-index: $zindex-1; .nav-item { color: rgba($gray-color-light, .5); display: block; flex: 1 0 auto; height: $unit-8; margin: $unit-1; max-width: 2.5rem; position: relative; &::before { background: currentColor; content: ""; display: block; height: $unit-h; position: absolute; top: .5rem; width: 100%; } } } } @keyframes carousel-slidein { 0% { transform: translateX(100%); } 100% { transform: translateX(0); } } @keyframes carousel-slideout { 0% { opacity: 1; transform: translateX(0); } 100% { opacity: 1; transform: translateX(-50%); } }