İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Web Geliştirme

IntersectionObserver ile Sonsuz Kaydırma

Bu yazı, IntersectionObserver ile Sonsuz Kaydırma konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 6 kritik noktayı ve bunları bir araya getiren JavaScript örneğini adım adım inceleyeceğiz.

Ferdi GidenFerdi Giden 2 dk okuma 2
IntersectionObserver ile Sonsuz Kaydırma
İçindekiler
  1. Konuya genel bakış
  2. Kritik noktalar
  3. JavaScript ile uygulama
  4. Avantajları
  5. Özetle

Bu yazı, IntersectionObserver ile Sonsuz Kaydırma konusunu temelden ele alıyor. Önce kavramın ne işe yaradığını, ardından 6 kritik noktayı ve bunları bir araya getiren JavaScript örneğini adım adım inceleyeceğiz.

Konuya genel bakış

Sayfanın sonuna gelindiğinde yeni içerik yüklemek için eskiden scroll olayı dinlenir ve her kaydırmada konum hesaplanırdı; bu da özellikle mobilde takılmalara yol açardı. IntersectionObserver API'si, bir öğe görünür alana girdiğinde tarayıcının sizi haberdar etmesini sağlar; hesaplama tarayıcıya kalır, sayfa akıcı kalır.

Kritik noktalar

  • Gözcü öğe: Listenin sonuna boş bir işaret öğesi koyun; o göründüğünde sıradaki sayfayı yükleyin.
  • rootMargin: Pozitif bir kenar payı, kullanıcı sona varmadan yüklemeyi başlatır ve bekleme hissini ortadan kaldırır.
  • Çift istek koruması: Bir yükleme sürerken yenisini başlatmamak için bir durum bayrağı kullanın ve finally içinde sıfırlayın.
  • disconnect: Son sayfaya gelindiğinde gözlemciyi kapatın; sunucuya boşuna istek gitmesin.
  • Sayfalı adresler: Arama motorları ve klavye kullanıcıları için ?sayfa=2 gibi normal sayfa bağlantılarını da sunun.
  • Yalnız görseller için: Görselleri geciktirmek istiyorsanız img etiketine loading="lazy" eklemek yeterlidir; JavaScript gerekmez.

JavaScript ile uygulama

Aşağıdaki JavaScript örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:

const liste = document.querySelector('#yazilar');
const isaret = document.querySelector('#daha-fazla');
let sayfa = 1;
let yukleniyor = false;

const gozlemci = new IntersectionObserver(async ([giris]) => {
  if (!giris.isIntersecting || yukleniyor) return;
  yukleniyor = true;
  try {
    const yanit = await fetch(`/api/yazilar?sayfa=${sayfa + 1}`);
    const { yazilar, sonSayfa } = await yanit.json();
    yazilar.forEach((y) => {
      const li = document.createElement('li');
      li.textContent = y.baslik;
      liste.append(li);
    });
    sayfa++;
    if (sonSayfa) gozlemci.disconnect();
  } finally {
    yukleniyor = false;
  }
}, { rootMargin: '400px' });   // sona 400 piksel kala yüklemeye başla

gozlemci.observe(isaret);

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

var yerine const ve let kullanın; var blok kapsamı tanımadığı için beklenmedik hatalara yol açabilir.

Avantajları

Kısaca özetlemek gerekirse:

  • Bakımı kolay ve okunur bir kod tabanı sağlar
  • Farklı cihaz ve tarayıcılarda tutarlı sonuç verir
  • Ekip içinde ortak bir uygulama standardı oluşturur
  • Sayfa performansını ve kullanıcı deneyimini iyileştirir

Özetle

IntersectionObserver ile Sonsuz Kaydırma, küçük ama düzenli adımlarla ustalaşılan konulardan biri. Özellikle Gözcü öğe ve Yalnız görseller için başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al