// Carousels .carousel { background: @bg-color; display: block; height: 50vh; overflow: hidden; position: relative; width: 100%; .carousel-container { height: 100%; left: 0; position: relative; .carousel-item { animation: carousel-slideout 1s 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: fade(@light-gray-color, 25%); border-color: fade(@light-gray-color, 50%); color: @light-gray-color; opacity: 0; position: absolute; top: 50%; transition: all .4s ease; transform: translateY(-50%); z-index: 99; } .item-prev { left: 2rem; } .item-next { right: 2rem; } } .carousel-locator { &:nth-of-type(1):checked ~ .carousel-container .carousel-item:nth-of-type(1), &:nth-of-type(2):checked ~ .carousel-container .carousel-item:nth-of-type(2), &:nth-of-type(3):checked ~ .carousel-container .carousel-item:nth-of-type(3), &:nth-of-type(4):checked ~ .carousel-container .carousel-item:nth-of-type(4) { animation: carousel-slidein .75s 1; opacity: 1; z-index: 99; } &:nth-of-type(1):checked ~ .carousel-nav .nav-item:nth-of-type(1), &:nth-of-type(2):checked ~ .carousel-nav .nav-item:nth-of-type(2), &:nth-of-type(3):checked ~ .carousel-nav .nav-item:nth-of-type(3), &:nth-of-type(4):checked ~ .carousel-nav .nav-item:nth-of-type(4) { color: @light-gray-color; } } .carousel-nav { bottom: 1rem; display: flex; justify-content: center; left: 50%; position: absolute; transform: translateX(-50%); width: 20rem; z-index: 999; .nav-item { color: fade(@light-gray-color, 50%); display: block; flex: 1 0 auto; height: 4rem; margin: .4rem; max-width: 5rem; position: relative; &::before { background: currentColor; content: ""; display: block; height: .3rem; position: absolute; top: 2rem; width: 100%; } } } &.carousel-autoplay { .carousel-item { //animation: carousel-autoplay .15s infinite; } } } @supports (object-fit: cover) { .carousel-item { img { height: 100%; object-fit: cover; width: 100%; } } } @keyframes carousel-slidein { 0% { transform: translateX(100%); } 100% { transform: translateX(0); } } @keyframes carousel-slideout { 0% { opacity: 1; transform: translateX(0) scale(1); } 100% { opacity: 0; transform: translateX(-50%) scale(.95); } }