← Blog
Web Gelistirme6 dk okumaMegis

SVG Optimizasyonu: Vektor Grafikleri Verimli Kullanma

SVG dosyalarini optimize ederek web sitenizin performansini artirin ve olceklenebilir grafikler kullanin.

SVG Nedir ve Neden Kullanilir?

SVG (Scalable Vector Graphics), XML tabanli bir vektor grafik formatidir. Piksel tabanli formatlardan (PNG, JPEG, WebP) farkli olarak, SVG dosyalari matematiksel denklemlerle tanimlanan yollar, sekiller ve metinlerden olusur. Bu sayede herhangi bir boyuta olceklendiklerinde kalite kaybi yasamazlar — retina ekranlardan buyuk monitrore, mobilden masaustune her yerde net ve keskin gorunurler.

Web gelistirmede SVG, logolar, ikonlar, illustrasyonlar, grafikler, animasyonlar ve interaktif gorsel elemanlar icin vazgecilmez bir formattir. Dosya boyutlari genellikle bitmap alternatiflrine gore cok daha kucuktur, CSS ve JavaScript ile manipule edilebilir ve erisilebilirlik acisindan zengin secenekler sunar. Ancak SVG dosyalarinin dogru sekilde optimize edilmemesi, performans sorunlarina ve gereksiz buyuk dosya boyutlarina yol acabilir. Bu rehberde SVG optimizasyonunun tum yonlerini detayli olarak inceliyoruz.

SVG'nin Avantajlari

  • Olceklenebilirlik: Herhangi bir boyutta net gorunum, retina ve yuksek DPI ekranlar icin idealdir.
  • Kucuk Dosya Boyutu: Basit grafikler icin PNG/JPEG'den cok daha kucuk dosya boyutu.
  • CSS ile Stil Verilebilir: Renkler, boyutlar, animasyonlar CSS ile kontrol edilebilir.
  • JavaScript ile Manipule Edilebilir: DOM elemani olarak erisilebilir, dinamik degisiklikler yapilabilir.
  • Animasyon Destegi: CSS animasyonlari, SMIL ve JavaScript ile zengin animasyonlar olusturulabilir.
  • Erisilebilirlik: Metin tabanli oldugu icin ekran okuyucular tarafindan okunabilir, title ve desc etiketleri ile zenginlestirilebilir.
  • Aranabilirlik: SVG icindeki metinler arama motorlari tarafindan dizinlenebilir.

SVG Optimizasyon Araclari

SVGOMG

SVGOMG, SVGO (SVG Optimizer) aracinin web tabanli gorsel arayuzudur. SVG dosyalarini yukleyerek her optimizasyon secenegini tek tek acip kapatabilir ve sonucu aninda onizleyebilirsiniz. Genellikle %30-70 arasinda dosya boyutu azaltmasi saglar. Ozellikle tasarim araclarindan (Figma, Illustrator, Sketch) cikarilan SVG'lerin temizlenmesi icin idealdir.

SVGO (Komut Satiri)

SVGO, Node.js tabanli bir SVG optimizasyon aracidir. Komut satirindan calisir ve CI/CD pipeline'larina entegre edilebilir. Yapilandirma dosyasi ile hangi optimizasyonlarin uygulanacagini detayli olarak kontrol edebilirsiniz. Build surecine entegre ederek tum SVG'lerin otomatik olarak optimize edilmesini saglayabilirsiniz.

SVGO Eklentileri ve Yapilandirmasi

  • removeViewBox: Bu eklentiyi devre disi birakin. ViewBox olmadan SVG'ler dogru sekilde olceklenemez.
  • removeTitle: Erisilebilirlik icin title etiketlerini korumak istiyorsaniz devre disi birakin.
  • removeDimensions: width/height ozelliklerini kaldirarak SVG'nin CSS ile boyutlandirilmasini saglar.
  • cleanupIDs: ID'leri kisaltir veya kaldirir. Ancak CSS veya JavaScript ile ID uzerinden hedefleme yapiyorsaniz dikkatli olun.
  • convertPathData: Yol verilerini optimize ederek dosya boyutunu azaltir.

Diger Araclar

  • Figma: Export ayarlarinda "Simplify stroke" ve "Outline text" secenekleri ile daha temiz SVG ciktisi alabilirsiniz.
  • Illustrator: "SVG icin kaydet" secenegi ile optimize edilmis SVG ciktisi uretebilirsiniz.
  • svgr: SVG dosyalarini React bilesenlerine donusturur. Next.js ve CRA projelrinde yaygin kullanilir.

Inline SVG vs. Dosya Olarak SVG

SVG'leri kullanmanin iki temel yolu vardir ve her birinin avantajlari ve dezavantajlari bulunur.

Inline SVG

SVG kodunu dogrudan HTML icerisine yerlestirmek, en esnek kullanim yoludur.

  • Avantajlari: CSS ile stil verilebilir, JavaScript ile manipule edilebilir, ek HTTP istegi gerektirmez, animasyon icin idealdir.
  • Dezavantajlari: HTML boyutunu arttirir, tarayici onbelleklemesi kullanilamaz, ayni SVG birden fazla sayfada kullanildiginda tekrar eder.
  • En Uygun: Ikonlar, kucuk grafikler, animasyonlu elemanlar, CSS ile etkisime girecek SVG'ler.

Harici Dosya Olarak SVG

SVG'yi <img> etiketi, CSS background-image veya <object> etiketi ile yuklemek.

  • Avantajlari: Tarayici onbelleklemesinden yararlanir, HTML boyutunu artirmaz, ayni dosya birden fazla yerde kullanilabilir.
  • Dezavantajlari: CSS ile ic elemanlara stil verilemez (img etiketi ile), ek HTTP istegi gerektirir, JavaScript manipulasyonu sinirlidir.
  • En Uygun: Buyuk illustrasyonlar, dekoratif gorseller, cok sayida sayfada tekrar kullanilan SVG'ler.

SVG Sprite Sistemi

Cok sayida ikon kullanan projelerde her ikonu ayri bir dosya veya inline SVG olarak eklemek yerine, SVG sprite sistemi kullanmak verimli bir yaklasimdir. Tum ikonlar tek bir SVG dosyasinda <symbol> etiketleri icinde tanimlanir ve <use> etiketi ile referans verilir.

Sprite Avantajlari

  • Tek bir HTTP istegi ile tum ikonlar yuklenir.
  • Tarayici onbelleklemesinden yararlanilir.
  • CSS ile renk ve boyut degisiklikleri yapilabilir (currentColor kullanarak).
  • HTML icerigi temiz ve okunakli kalir.

Sprite Olusturma Araclari

  • svg-sprite: Node.js tabanli, otomatik sprite olusturma araci. Farkli modlarda (symbol, css, view) sprite uretebilir.
  • SVGR sprite plugin: React projeleri icin otomatik sprite yonetimi.
  • Vite/Webpack eklentileri: Build surecinde otomatik sprite olusturma eklentileri mevcuttur.

SVG ile CSS Animasyonlari

SVG elemanlarini CSS ile animasyon uygulamak, performansli ve gorsel acidan zengin deneyimler olusturmanin etkili bir yoludur.

Animasyon Teknikleri

  • CSS Transitions: Hover, focus gibi durum degisimlerinde yumuask gecisler. Ikon renk degisimleri, boyut animasyonlari icin ideal.
  • CSS Keyframes: Karmasik, cok adimli animasyonlar. Donen yuklenme gostergeleri, atan kalp animasyonu gibi.
  • stroke-dasharray ve stroke-dashoffset: Cizgi cizim (line drawing) animasyonlari icin. SVG yollarini kademeli olarak cizdirebilirsiniz.
  • transform: Olcekleme, dondurme, tasima animasyonlari. GPU hizlandirmali, performansli animasyonlar icin kullanin.

Performans Ipuclari

  • transform ve opacity ozelliklerini tercih edin — bunlar GPU tarafindan hizlandirilir.
  • will-change CSS ozelligi ile tarayiciya animasyon yapilacagini onceden bildirin.
  • Karmasik animasyonlar icin requestAnimationFrame kullanin.
  • Cok sayida SVG animasyonu ayni anda calisiyorsa performansi izleyin.

SVG Erisilebilirligi

SVG'lerin ekran okuyucular ve yardimci teknolojiler tarafindan dogru sekilde yorumlanmasi icin erisilebilirlik en iyi uygulamalarini takip etmek onemlidir.

  • role ozelligi: Dekoratif SVG'lere role="presentation" veya aria-hidden="true" ekleyin. Anlamli SVG'lere role="img" ekleyin.
  • title etiketi: SVG icine <title> etiketi ekleyerek gorselin kisa bir aciklamasini verin. Bu, ekran okuyucular tarafindan okunur.
  • desc etiketi: Karmasik grafikler icin <desc> etiketi ile detayli aciklama ekleyin.
  • aria-labelledby: title ve desc etiketlerini aria-labelledby ile SVG etiketine baglayin.
  • Renk kontrasti: SVG icerigindeki renklerin WCAG standartlarina uygun kontrast oranlarına sahip oldugundan emin olun.
  • Hareket tercihleri: prefers-reduced-motion medya sorgusuna gore animasyonlari durdurun veya sadelelstirin.

SVG Optimizasyon Kontrol Listesi

  1. Tasarim aracindan cikarilan SVG'yi SVGOMG veya SVGO ile optimize edin.
  2. Gereksiz metadata, yorumlar ve editor bilgilerini kaldirin.
  3. viewBox ozelligini koruyun, sabit width/height yerine CSS ile boyutlandirin.
  4. Karmasik yollari sadeletin, gereksiz noktalari kaldirin.
  5. Ikonlar icin sprite sistemi kullanmayi degerlendirin.
  6. Kucuk, sik kullanilan SVG'leri inline; buyuk, seyrek kullanilanlari harici dosya olarak kullanin.
  7. CSS ile animasyon yaparken GPU hizlandirmali ozellikleri (transform, opacity) tercih edin.
  8. Erisilebilirlik etiketlerini (title, desc, role, aria-*) ekleyin.
  9. SVG icindeki metinleri path'e donusturmeyi (outline) degerlendirin; ancak erisilebilirlik ve dosya boyutu etkisini goz onunde bulundurun.
  10. Build surecine SVGO entegre ederek tum SVG'lerin otomatik optimize edilmesini saglayin.

Next.js'te SVG Kullanimi

Next.js projelerinde SVG kullanmanin birkac yolu vardir:

  • next/image ile: SVG dosyalarini <Image> bileseni ile yukleyebilirsiniz. Ancak bu yontemde CSS manipulasyonu mumkun degildir.
  • SVGR ile: @svgr/webpack eklentisi SVG dosyalarini React bilesenlerine donusturur. Import ederek dogrudan JSX icinde kullanabilirsiniz.
  • Inline JSX ile: SVG kodunu dogrudan JSX icine yazabilirsiniz. En esnek yontem olmakla birlikte dosya boyutunu arttirir.
  • public klasoru ile: Statik SVG'leri /public klasorune koyarak <img> ile yukleyebilirsiniz.

Sonuc:SVG, modern web gelistirmenin vazgecilmez gorsel formatidir. Dogru optimizasyon, uygun kullanim yontemi secimi ve erisilebilirlik en iyi uygulamalari ile hem performansli hem de kapsayici web deneyimleri olusturabilirsiniz. Megis olarak, her projede SVG'leri titizlikle optimize ederek en iyi gorsel kaliteyi en kucuk dosya boyutu ile sunuyoruz.

#svg#vektor grafik#optimizasyon#web grafik