SmartCodingTips

🖼️ JavaScript Project: Image Slider

Let's build a simple and responsive image slider (carousel) using plain JavaScript and a bit of CSS. This project teaches DOM manipulation, event handling, and working with dynamic content.

📦 HTML Structure

<div class="slider-container">
  <div class="slides">
    <img src="img1.jpg" class="slide active">
    <img src="img2.jpg" class="slide">
    <img src="img3.jpg" class="slide">
  </div>
  <button class="prev">❮</button>
  <button class="next">❯</button>
</div>

🎨 CSS Styles

.slider-container {
  position: relative;
  max-width: 700px;
  margin: auto;
  overflow: hidden;
}
.slides img {
  width: 100%;
  display: none;
}
.slide.active {
  display: block;
}
button.prev, button.next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.5);
  color: white;
  border: none;
  padding: 12px;
  cursor: pointer;
}
.prev { left: 0; }
.next { right: 0; }

⚙️ JavaScript Functionality

const slides = document.querySelectorAll(".slide");
const prevBtn = document.querySelector(".prev");
const nextBtn = document.querySelector(".next");

let currentSlide = 0;

function showSlide(index) {
  slides.forEach((slide, i) => {
    slide.classList.remove("active");
    if (i === index) slide.classList.add("active");
  });
}

nextBtn.addEventListener("click", () => {
  currentSlide = (currentSlide + 1) % slides.length;
  showSlide(currentSlide);
});

prevBtn.addEventListener("click", () => {
  currentSlide = (currentSlide - 1 + slides.length) % slides.length;
  showSlide(currentSlide);
});

// Auto Slide (Optional)
setInterval(() => {
  currentSlide = (currentSlide + 1) % slides.length;
  showSlide(currentSlide);
}, 5000);

showSlide(currentSlide);

✨ Features to Add

  • Auto-play toggle
  • Dots navigation
  • Keyboard navigation support
  • Swipe support for mobile (touch events)
💡 Tip: Use royalty-free images from sites like Unsplash for demo.