JavaScript ile Slider Yapımı: Adım Adım Rehber (Vanilla, React, Vue + Örnek Kodlar)
JavaScript ile Slider Yapımı: Adım Adım Rehber (Vanilla, React, Vue + Örnek Kodlar) |
📌 Giriş: Neden Slider Kullanılır?
Günümüzde kullanıcı deneyimi (UX) web tasarımında en öncelikli kriterlerden biridir. Bir web sitesine gelen ziyaretçiler, içeriklere daha çabuk ulaşmak ve görsel olarak zenginleştirilmiş bir deneyim yaşamak ister. İşte burada slider'lar devreye girer.
Slider’lar; web sitelerinde görsel ya da metin içeriklerini kaydırılabilir bir şekilde sunmak için kullanılan popüler kullanıcı arayüzü bileşenleridir.
Slider'lar şunlar için kullanılabilir:
Ana sayfada dikkat çekici içerik sunmak
Ürün tanıtımları
Galeri gösterimleri
Blog ya da haber içeriği rotasyonu
Kampanyaların ya da öne çıkan projelerin gösterimi
Bu yazıda sıfırdan bir JavaScript slider bileşeni oluşturmayı öğreneceksiniz. Ek olarak SEO uyumluluğu, erişilebilirlik (accessibility) ve performans gibi önemli konulara da değinilecektir.
🔍 SEO Perspektifinden Slider’lar
Slider’lar göz alıcı olabilir, ancak yanlış kodlandıklarında SEO açısından zarar verici olabilirler. Arama motorları özellikle aşağıdaki noktalara dikkat eder:
Slider’daki içeriklerin DOM'da görünür olması
İçeriklerin
alt
,title
,aria-*
gibi açıklayıcı HTML etiketleriyle desteklenmesiLazy loading gibi tekniklerin kullanılması
Kullanıcı dostu ve mobil uyumlu (responsive) olması
Bu yazıda örnek slider yapımız SEO dostu olacak şekilde tasarlanacaktır.
🛠️ Gereksinimler
Slider’ı oluşturmak için ihtiyacımız olanlar şunlardır:
HTML: Slider yapısını tanımlamak için
CSS: Görsel düzenleme ve geçiş animasyonları için
JavaScript: Kaydırma işlemlerini ve otomasyonu yönetmek için
Ayrıca bazı özellikleri isteğe göre ekleyebiliriz:
Otomatik geçiş (auto-slide)
Dots (küçük sayfa göstergeleri)
Oklarla manuel kaydırma
Swipe desteği (mobil uyumluluk)
Sonsuz döngü
📂 Dosya Yapısı Önerisi
Slider projesi için temel bir klasör yapısı aşağıdaki gibi olabilir:
Her şey sade ve modüler olacak şekilde yapılandırılmalı.
🧱 HTML Yapısı
Slider’ın temel HTML yapısı şöyle olabilir:
Bu yapı sayesinde JavaScript ile .prev
ve .next
butonlarına tıklanarak görseller arası geçiş sağlanabilir. Ayrıca .slide
sınıfıyla stil verme işlemi yapılacaktır.
🎨 CSS ile Temel Slider Tasarımı
Bu CSS kodu ile slider yatay olarak kayan bir yapı kazanır. JavaScript ile .slides
container’ını X ekseninde hareket ettirerek görsel geçişleri sağlayacağız.
🔧 JavaScript ile Slider'ı Aktif Hale Getirme
Öncelikle temel adımları tanımlayalım. Slider yapımızda aşağıdaki işlevleri hedefliyoruz:
Bir görsel gösterilirken diğerleri gizlenmeli.
next
veprev
butonlarıyla ileri ve geri geçiş yapılmalı.Aktif slide bilgisi tutulmalı.
Başlangıç olarak script.js
dosyamıza şu kodları ekleyelim:
Bu kodlar sayesinde sadece aktif slide gösterilecek, diğerleri gizlenecek.
⏭️ İleri ve Geri Butonlarını Tanımlama
Şimdi next
ve prev
butonlarıyla görseller arasında geçiş yapılmasını sağlayalım:
Bu basit modüler sistemle ileri veya geri tuşuna tıklayarak slider’ın döngüsel bir şekilde ilerlemesi sağlanır.
🌀 Geçiş Animasyonu Eklemek
CSS geçiş efekti ekleyerek daha pürüzsüz bir deneyim sağlayalım. Bunun için .slide
’lara opacity ve transition ekleyelim:
JavaScript’te de classList
kullanarak .active
sınıfı üzerinden kontrol sağlayalım:
Bu sayede slider geçişleri çok daha yumuşak ve estetik olacaktır.
⏱️ Otomatik Geçiş Özelliği (Auto-Slide)
Slider'ların çoğu belirli bir sürede otomatik geçiş yapar. Bunu da JavaScript ile kolayca entegre edebiliriz:
Bu kod, kullanıcı manuel olarak ileri/geri yaptığında otomatik geçişi sıfırdan başlatır.
📱 Mobil Uyumluluk: Swipe (Kaydırma) Desteği
Mobil cihazlarda kullanıcılar parmak hareketiyle slider’ı kontrol etmek ister. Bunu da şöyle yapabiliriz:
Bu kod sayesinde kullanıcılar parmaklarıyla slider'ı sağa ve sola kaydırarak geçiş yapabilir.
♻️ Sonsuz Döngü (Infinite Loop)
Slider'ın başa veya sona geldiğinde durmaması için index hesabını modüler şekilde yapıyoruz:
Bu yapı sayesinde slider görseller arasında sonsuz bir döngü oluşturur.
🔍 Gelişmiş Özellikler (Kısaca)
İleride aşağıdaki gelişmiş özellikleri de entegre edebilirsiniz:
Dots (küçük noktalı göstergeler)
Thumbnail navigation (küçük önizleme görselleri)
Video içeren slider’lar
JSON ile dinamik slider içerikleri
📈 1. SEO Uyumlu Slider Yapmak Neden Önemlidir?
Slider bileşenleri genellikle JavaScript ile dinamik olarak yüklendiğinden, arama motorları bu içerikleri göremeyebilir. Özellikle Google dışındaki arama motorlarında JavaScript renderı sınırlı olabilir.
SEO uyumu için dikkat edilmesi gerekenler:
HTML içeriği sayfa yüklendiğinde DOM içinde yer almalı.
alt
,title
,aria-*
gibi açıklayıcı etiketler kullanılmalı.Lazy loading doğru şekilde uygulanmalı.
Sayfa açılışında en az bir görsel gösterilmeli.
🏷️ 2. Görsellerin SEO Dostu Etiketlenmesi
Slider’da kullanılan görsellerin her birine mutlaka alt
(alternative text) ve tercihen title
özellikleri eklenmelidir.
Bu sayede:
Arama motorları görseli daha iyi indeksler.
Ekran okuyucular bu içeriği sesli olarak sunabilir.
Kullanıcı görsel yüklenmeden önce ne içerdiğini anlayabilir.
🧩 3. Erişilebilirlik (Accessibility – a11y)
Web içeriklerinin herkes için erişilebilir olması bir standart haline gelmiştir. Slider gibi etkileşimli bileşenlerde bu daha da önemlidir.
a11y için öneriler:
role="region"
veyarole="group"
gibi ARIA roller kullanılmalı.Aktif slide için
aria-hidden="false"
; diğerleri içinaria-hidden="true"
ayarlanmalı.Butonlara
aria-label
eklenmeli:
tabindex
ile klavye navigasyonu mümkün olmalı.Otomatik kayan slider’da kullanıcıya durdurma seçeneği sunulmalı (örneğin: durdur/başlat butonu).
🧠 4. Lazy Loading (Tembel Yükleme)
Tüm görselleri baştan yüklemek sayfa hızını yavaşlatabilir. Özellikle büyük boyutlu görsellerde loading="lazy"
kullanmak büyük fayda sağlar:
Tarayıcı, bu özelliği destekliyorsa yalnızca görüntü alanındaki (viewport) içerikleri yükleyecektir.
⚙️ 5. Performans Optimizasyonu
Web performansı, kullanıcı deneyimi ve SEO için kilit bir faktördür. İşte slider’da dikkat etmen gereken performans ipuçları:
A. Görsel Optimizasyonu
.webp
veya.avif
formatlarını tercih et.Görselleri uygun çözünürlükte kullan.
srcset
ile cihazlara göre uygun görsel boyutu sun:
B. Kodları Minimize Et
CSS ve JavaScript dosyalarını minimize et (örnek:
style.min.css
,script.min.js
)Kullanmadığın CSS/JS kodlarını temizle.
C. Kaynakları Asenkron Yükle
JavaScript dosyasını HTML’de
defer
ile tanımla:
Bu sayede HTML renderı tamamlandıktan sonra JavaScript çalışır, sayfa daha hızlı açılır.
🔐 6. Slider’da Kullanıcı Kontrolü
Slider otomatik kayarken kullanıcıya durdurma imkânı sunmak UX açısından önemlidir. Bir buton yardımıyla otomatik geçişi başlatıp durdurabiliriz:
JavaScript’te şu şekilde yönetilir:
📱 7. Responsive (Mobil Uyumlu) Tasarım
Mobil cihazlarda slider’ın düzgün çalışması için responsive tasarım şarttır. Bunun için CSS media query’leri kullanılmalıdır:
Ayrıca, mobil kullanıcılar için swipe desteği (önceki bölümde ekledik) hayati önem taşır.
🔘 1. Dot (Nokta) Navigasyonu Eklemek
Slider’ın altında her slide’a karşılık gelen küçük daireler (dots) oldukça kullanışlıdır. Kullanıcılar hangi slide’ta olduklarını görebilir ve direkt geçiş yapabilirler.
HTML Yapısı
CSS
JavaScript
Bu şekilde dots navigasyonu aktif olur ve kullanıcılar kolayca geçiş yapabilir.
🖼️ 2. Thumbnail (Küçük Görsel) Navigasyonu
Slider’a küçük görseller ekleyerek kullanıcıların hangi görseli seçeceklerini önizlemeyle görmesini sağlayabiliriz.
HTML
CSS
JavaScript
Bu sistem, özellikle ürün tanıtım slider’larında profesyonel bir görünüm sağlar.
🧩 3. Dinamik Slider İçeriği (JavaScript ile JSON'dan Yükleme)
Slider’ı manuel olarak HTML’e yazmak yerine JavaScript üzerinden dinamik olarak oluşturabiliriz. Özellikle CMS tabanlı projelerde bu yöntem çok işlevseldir.
Örnek JSON İçeriği
JavaScript ile HTML Oluşturma
Bu yapı ile hem görselleri hem de SEO uyumlu alt/title
verilerini dışarıdan JSON ile kontrol edebiliriz. Gelişmiş CMS veya e-ticaret sitelerinde bu yaklaşım şarttır.
🧠 Bonus: Daha Fazla Gelişmiş Özellik Fikri
İleri seviye slider projelerinde aşağıdaki özellikler entegre edilebilir:
Slider’a video desteği (YouTube, MP4)
Keyboard navigation (← → tuşlarıyla geçiş)
Slider’a giriş animasyonları (fade, slide, zoom)
Durum çubuğu (progress bar)
İçerik katmanı (caption, açıklama metinleri)
⚛️ 1. React ile Slider Bileşeni Oluşturma
React ile slider yapmak oldukça kolaydır çünkü bileşen (component) yapısı sayesinde her parçayı modüler şekilde oluşturabiliriz.
A. Temel Yapı
B. Özelleştirme
React ile dots, thumbnails gibi özellikleri ayrı bileşenler halinde yazabilirsin.
useEffect
,useRef
,useCallback
gibi hook’lar ile daha karmaşık logic’leri yönetebilirsin.CSS-in-JS (styled-components, Tailwind) ile stillendirme kolaylaşır.
🔁 2. Vue.js ile Slider Oluşturma
Vue, veri bağlama (data binding) ve direktifleriyle slider gibi etkileşimli yapıları kolayca inşa etmeyi sağlar.
A. Temel Slider Component’i
🔗 3. jQuery ile Slider Yapımı
Hala birçok projede legacy sistemlerde jQuery kullanılmakta. Eğer jQuery tabanlı bir yapıya entegre etmek istiyorsan aşağıdaki gibi bir slider kurabilirsin.
HTML
jQuery Script
CSS (jQuery İçin)
🧩 4. Framework Entegrasyonlarında Dikkat Edilecekler
State yönetimi: React/Vue ile state iyi tasarlanmalı.
Yeniden kullanılabilirlik: Slider’ı her sayfada kolayca kullanabilmek için
props
/props drilling
veyaslot
yapıları düşünülmeli.Framework uyumlu animasyonlar: React için Framer Motion, Vue için Vue Transition tercih edilebilir.
Framework ile gelen hazır slider kütüphaneleri:
React için:
react-slick
,swiper
,keen-slider
Vue için:
vue-awesome-swiper
,vue-carousel
jQuery için:
slick
,owlCarousel
⚠️ 1. Sık Yapılan Slider Hataları ve Çözümleri
Hata 1: “Uncaught TypeError: slides is undefined”
Sebep: document.querySelectorAll(".slide")
yanlış yerde veya DOM yüklü değilken çalışıyor.
Çözüm:
Hata 2: Dots veya Thumbnail’lerin slide ile senkronize olmaması
Sebep: currentIndex
güncelleniyor ama dot/thumbnail sınıfı güncellenmiyor.
Çözüm: updateDots()
ve updateThumbnails()
fonksiyonlarını showSlide()
fonksiyonu içine entegre et.
Hata 3: Slider çok hızlı ya da yavaş çalışıyor
Sebep: setInterval()
değeri yanlış belirlenmiş.
Çözüm:
Hata 4: Responsive (mobil uyumlu) olmaması
Sebep: CSS media query veya object-fit
gibi responsive özelliklerin eksik olması.
Çözüm:
🧪 2. Debug Teknikleri
1. console.log()
ile kontrol
Slider geçişlerinde console.log(currentIndex)
ile geçişlerin doğru çalışıp çalışmadığını kontrol et.
2. DOM Element kontrolü
3. Tarayıcı geliştirici araçları (DevTools)
Network sekmesinden görsel yolları (404 hatası) kontrol et.
Elements sekmesinde
display: none
veyaopacity: 0
durumlarına dikkat et.
4. setTimeout
ile animasyonları kontrol et
🌐 3. SEO Uyumlu Slider İçin İpuçları
Slider görsellerinin SEO açısından da optimize edilmesi gerekir. Google görsellerden trafik almak için:
Görsellerin dosya isimleri anlamlı olmalı:
✅yeni-sezon-koleksiyon.jpg
❌img123.jpg
Görsellere
alt
vetitle
attributeleri eklenmeli:
Slider başlıkları
<h2>
veya<h3>
gibi SEO önemine sahip etiketlerle kullanılmalı:
Lazy load (gecikmeli yükleme) SEO için önemlidir:
🧩 4. Gerçek Hayatta Kullanım Senaryoları
E-ticaret Sitelerinde
Ürün tanıtımı
Kampanya slider’ları
Ön plana çıkarmak istenen ürünler
Blog ve Haber Sitelerinde
Öne çıkan yazılar
Galeri içerikleri
Kategoriye özel slider’lar
Kurumsal Sitelerde
Ana sayfa vitrin bölümleri
Müşteri referansları slider’ı
Proje/portföy galerileri
Uygulamalarda
Onboarding (ilk açılış) slider’ları
Mobil uygulamalarda “swipeable” intro’lar
Dashboard içi görsel yönlendirmeler
🎁 Bonus: Hazır Kütüphaneler
Kod yazmak istemeyenler veya hızlı çözüm isteyenler için slider kütüphaneleri:
🎉 Sonuç: JavaScript ile Slider Yapımı
Bu kapsamlı makalede, sıfırdan profesyonel düzeyde bir slider yapmayı öğrendin. İşte başardıkların:
✅ Temel slider yapımı
✅ Dots, thumbnail ve dinamik veri yönetimi
✅ React, Vue, jQuery ile entegrasyon
✅ Hata ayıklama ve SEO optimizasyonu
✅ Gerçek projelerde kullanım örnekleri
Artık sadece slider yapmayı değil, bu slider'ı projene nasıl entegre edeceğini ve SEO’dan performansa kadar her yönüyle nasıl optimize edeceğini de biliyorsun. 🚀
İstersen bu slider’ı bir galeriye, bir portföy sitesine ya da e-ticaret kampanyana hemen uygulamaya başlayabilirsin.