CodeBlanks Logo Icon CodeBlanks

Görsel optimizasyonu

HTML kursu · Uzman · Ders 15/39

srcset, sizes, loading, decoding ve width/height ile optimize görseller yazarsın.

Görsel optimizasyonu: altı öznitelik

Haber sayfasında görseller genelde en büyük yüktür. <img>'ye altı öznitelik eklemek hem LCP hem CLS ölçütlerini iyileştirir:

  • src: yedek görsel yolu.
  • srcset: farklı genişlikte kaynak listesi.
  • sizes: her görüntü alanı için genişlik ipucu.
  • width / height: yer ayrılır, CLS düşer.
  • loading="lazy": ekran dışı görseli geciktirir.
  • decoding="async": kod çözmeyi ana iş parçacığından ayırır.

srcset ve sizes nasıl çalışır?

srcset, görselin farklı genişlikte sürümlerini listeler: dosya-480.webp 480w, dosya-960.webp 960w. w son eki piksel genişliği belirtir.

sizes, her görüntü alanı için görselin ne kadar yer kaplayacağını söyler: (max-width: 600px) 100vw, 50vw. Mobilde tam genişlik, masaüstünde yarım genişlik.

Tarayıcı bu iki bilgiyi birleştirir ve cihaz için en uygun kaynağı seçer. Böylece büyük görsel küçük ekrana gönderilmez; bant genişliği tasarrufu olur.

Uygulama main içine optimize görsel ekle

Önceki dersin header içeren body'sini al. <header>'dan sonra bir <main> ekle; içine bir <article> koy. Article'ın içine h2 (örnek Borsa rekor tazeledi) ve bir <img> ekle. img şu öznitelikleri taşısın: src (https://cdn.hizlihaber.com/kapak/ana-haber-960.webp), srcset (480w, 960w, 1440w), sizes ((max-width: 600px) 100vw, 50vw), width="960", height="540", alt (açıklama), loading="lazy" ve decoding="async".

Örnek çözümü göster
<!DOCTYPE html>
<html lang="tr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hızlı Haber - Ana sayfa</title>
    <link rel="preconnect" href="https://cdn.hizlihaber.com">
    <link rel="dns-prefetch" href="https://cdn.hizlihaber.com">
    <link rel="preload" as="image" href="https://cdn.hizlihaber.com/kapak/ana-haber-960.webp">
  </head>
  <body>
    <header>
      <h1>Hızlı Haber</h1>
      <p>Türkiye'nin hızlı haber kaynağı</p>
    </header>
    <main>
      <article>
        <h2>Borsa rekor tazeledi</h2>
        <img src="https://cdn.hizlihaber.com/kapak/ana-haber-960.webp"
             srcset="https://cdn.hizlihaber.com/kapak/ana-haber-480.webp 480w,
                     https://cdn.hizlihaber.com/kapak/ana-haber-960.webp 960w,
                     https://cdn.hizlihaber.com/kapak/ana-haber-1440.webp 1440w"
             sizes="(max-width: 600px) 100vw, 50vw"
             width="960" height="540"
             alt="Borsa ekranında yükselen grafik"
             loading="lazy" decoding="async">
      </article>
    </main>
  </body>
</html>

Kendini test et

  1. Ekranın altındaki görseli geciktirmek için loading değerine ne yazılır?

    • loading="eager"
    • loading="lazy"
    • loading="defer"
    • loading="async"
    Cevabı göster

    loading="lazy" — Doğru. loading="lazy" görseli yalnızca görünür alana yaklaştığında yükler.

  2. decoding özniteliğini tamamla

    <img src="kapak.webp" width="960" height="540" alt="Grafik" decoding="____">
    Cevabı göster
    <img src="kapak.webp" width="960" height="540" alt="Grafik" decoding="async">
  3. Özniteliği rolüyle eşleştir

    srcset
    Farklı genişlikte kaynak listesi
    sizes
    Görüntü alanı ipucu
    width + height
    CLS'i azaltır
    loading="lazy"
    Ekran dışını geciktirir

Uzman bölümündeki tüm dersler