CSS-Only Animated Portfolio-code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple Slider</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>

    <div class="slider-container">
        <div class="slider">
            <div class="slide"><img src="https://via.placeholder.com/600x300/ff7f7f/333333?text=Slide+1" alt="Slide 1"></div>
            <div class="slide"><img src="https://via.placeholder.com/600x300/7fbfff/333333?text=Slide+2" alt="Slide 2"></div>
            <div class="slide"><img src="https://via.placeholder.com/600x300/7fff7f/333333?text=Slide+3" alt="Slide 3"></div>
        </div>
        <button class="prev">❮</button>
        <button class="next">❯</button>
    </div>

    <script src="script.js"></script>
</body>
</html>

HTML
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
.slider-container {
    position: relative;
    width: 80%;
    max-width: 600px;
    margin: auto;
    overflow: hidden;
    border-radius: 10px;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
}
.slider {
    display: flex;
    transition: transform 0.5s ease-in-out;
}
.slide {
    min-width: 100%;
}
.slide img {
    width: 100%;
    display: block;
}
.prev, .next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0, 0, 0, 0.5);
    color: white;
    border: none;
    padding: 10px;
    cursor: pointer;
    font-size: 18px;
    border-radius: 5px;
}
.prev { left: 10px; }
.next { right: 10px; }
.prev:hover, .next:hover {
    background: rgba(0, 0, 0, 0.8);
}
const slider = document.querySelector(".slider");
const slides = document.querySelectorAll(".slide");
const prev = document.querySelector(".prev");
const next = document.querySelector(".next");
let index = 0;

function showSlide(i) {
    if (i < 0) {
        index = slides.length - 1;
    } else if (i >= slides.length) {
        index = 0;
    } else {
        index = i;
    }
    slider.style.transform = `translateX(${-index * 100}%)`;
}

prev.addEventListener("click", () => showSlide(index - 1));
next.addEventListener("click", () => showSlide(index + 1));

setInterval(() => showSlide(index + 1), 3000); // Auto slide every 3 seconds
Scroll to Top