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,
titlevedescetiketleri 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 (
currentColorkullanarak). - 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
transformveopacityozelliklerini tercih edin — bunlar GPU tarafindan hizlandirilir.will-changeCSS ozelligi ile tarayiciya animasyon yapilacagini onceden bildirin.- Karmasik animasyonlar icin
requestAnimationFramekullanin. - 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"veyaaria-hidden="true"ekleyin. Anlamli SVG'lererole="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-labelledbyile SVG etiketine baglayin. - Renk kontrasti: SVG icerigindeki renklerin WCAG standartlarina uygun kontrast oranlarına sahip oldugundan emin olun.
- Hareket tercihleri:
prefers-reduced-motionmedya sorgusuna gore animasyonlari durdurun veya sadelelstirin.
SVG Optimizasyon Kontrol Listesi
- Tasarim aracindan cikarilan SVG'yi SVGOMG veya SVGO ile optimize edin.
- Gereksiz metadata, yorumlar ve editor bilgilerini kaldirin.
viewBoxozelligini koruyun, sabitwidth/heightyerine CSS ile boyutlandirin.- Karmasik yollari sadeletin, gereksiz noktalari kaldirin.
- Ikonlar icin sprite sistemi kullanmayi degerlendirin.
- Kucuk, sik kullanilan SVG'leri inline; buyuk, seyrek kullanilanlari harici dosya olarak kullanin.
- CSS ile animasyon yaparken GPU hizlandirmali ozellikleri (
transform,opacity) tercih edin. - Erisilebilirlik etiketlerini (
title,desc,role,aria-*) ekleyin. - SVG icindeki metinleri path'e donusturmeyi (outline) degerlendirin; ancak erisilebilirlik ve dosya boyutu etkisini goz onunde bulundurun.
- 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/webpackeklentisi 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
/publicklasorune 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.