<div class="carousel">
<div class="slides">
<img
src="https://webdevservices.in/cdn/1.png"
alt="Stainless Steel"
/>
<img
src="https://webdevservices.in/cdn/2.png"
alt="Army Green"
/>
<img
src="https://webdevservices.in/cdn/3.png"
alt="Cranberry"
/>
<img
src="https://webdevservices.in/cdn/4.png"
alt="Midnight Blue"
/>
</div>
<div class="overlays">
<div class="bar" style="--bar-color: #bdc3c7;"></div>
<div class="bar" style="--bar-color: #218c74;"></div>
<div class="bar" style="--bar-color: #dd6b7b;"></div>
<div class="bar" style="--bar-color: #30465c;"></div>
</div>
<ul class="nav-links">
<li><a href="#" class="nav-link">Stainless Steel</a></li>
<li><a href="#" class="nav-link">Army Green</a></li>
<li><a href="#" class="nav-link">Cranberry</a></li>
<li><a href="#" class="nav-link">Midnight Blue</a></li>
</ul>
</div>
@import url("https://fonts.googleapis.com/css?family=Lora:400,400i,700");
body {
display: flex;
justify-content: flex-start;
align-items: center;
min-height: 100vh;
margin: 0;
}
.carousel {
position: relative;
display: flex;
}
.carousel .slides {
position: relative;
top: -4em;
left: 10em;
}
.carousel .slides img {
position: absolute;
width: 450px;
height: 450px;
opacity: 0;
z-index: 9999;
}
.carousel .slides img.active {
opacity: 1;
}
.carousel .overlays {
position: relative;
width: 36em;
height: 18em;
}
.carousel .overlays .bar {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--bar-color);
transform-origin: left;
}
.carousel .nav-links {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
margin: 0;
padding: 0 0 0 6em;
list-style-type: none;
}
.carousel .nav-links .nav-link {
font-size: 2rem;
font-family: Lora, serif;
line-height: 2;
text-decoration: none;
color: #7f8c8d;
transition: 0.3s;
}
.carousel .nav-links .nav-link:hover {
color: #1c1e1f;
}
.carousel .nav-links .nav-link.active {
color: black;
pointer-events: none;
}
var navLinks = document.querySelectorAll(".carousel .nav-link");
var slides = document.querySelectorAll(".carousel .slides img");
var overlays = document.querySelectorAll(".carousel .bar");
var maxZIndex = navLinks.length;
var easeInOutQuart = "cubic-bezier(0.77, 0, 0.175, 1)";
slides[0].classList.add("active");
navLinks[0].classList.add("active");
navLinks.forEach(function (navLink, activeIndex) {
overlays[activeIndex].style.zIndex = "".concat(navLinks.length -
activeIndex);
navLink.addEventListener("click", function () {
// nav-link
navLinks.forEach(function (navLink) { return navLink.classList.remove("active"); });
navLink.classList.add("active");
// slide
var currentSlide = document.querySelector(".carousel .slides img.active");
var slideFadeOut = currentSlide.animate([
{ transform: "translateX(0)", opacity: 1 },
{ transform: "translateX(5%)", opacity: 0 }
], {
duration: 600,
easing: "ease-in",
fill: "forwards"
});
slideFadeOut.onfinish = function () {
slides.forEach(function (slide) { return slide.classList.remove("active"); });
var activeSlide = slides[activeIndex];
activeSlide.classList.add("active");
activeSlide.animate([
{
transform: "translateX(-5%)",
opacity: 0
},
{
transform: "translateX(0)",
opacity: 1
}
], { duration: 600, easing: "ease-out", fill: "forwards" });
};
// overlay
maxZIndex += 1;
var activeOverlay = overlays[activeIndex];
activeOverlay.style.zIndex = "".concat(maxZIndex);
activeOverlay.animate([{ transform: "scaleX(0)" }, { transform: "scaleX(1)" }], { duration: 1200, fill: "forwards", easing: easeInOutQuart });
});
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.