SVG — W3C konsorsiumi tomonidan ishlab chiqilgan, XMLga asoslangan vektor tasvir formatidir. JPEG va PNG kabi rastr formatlaridan farqli o‘laroq, SVG shakllarning matematik tavsifini saqlaydi: chiziqlar, egri chiziqlar, doiralar va matn. Bu tasvirni sifat yo‘qotmasdan istalgan o‘lchamga o‘zgartirish imkonini beradi. MDN Web Docs, 2025 ma’lumotlariga ko‘ra, SVG barcha zamonaviy brauzerlarda qo‘llab-quvvatlanadi va ikonkalar, illyustratsiyalar, animatsiyalar va grafiklar üchun ishlatiladi. Veb-ishlanmasida SVG kichik o‘lchami va CSS orqali stillashtirish imkoniyati tufayli adaptiv interfeyslar üchun standartga aylandi.
Asosiy
SVG — 2001-yilda W3C tavsiyasi sifatida paydo bo‘lgan, XMLga asoslangan vektor grafika formatidir. Rastr formatlaridan farqli o‘laroq, SVG tasvirni geometrik primitivlar orqali tavsiflaydi: nuqtalar, chiziqlar, egri chiziqlar va ko‘pburchaklar. SVG fayli oddiy matnli XML hujjat bo‘lib, uni standart vositalar bilan o‘qish, tahrirlash va siqish mumkin.
SVG arxitekturasi bir necha asosiy konsepsiyalarni o‘z ichiga oladi. viewBox elementning haqiqiy o‘lchamlaridan qat’i nazar virtual koordinatalar tizimini belgilaydi. Masalan, viewBox="0 0 100 100" 100×100 kvadrat to‘r yaratadi, uning ichida barcha koordinatalar barqaror. Konteynerning kengligi yoki balandligi o‘zgarganda, mazmun mutanosib ravishda masshtablanadi.
W3C SVG 2 Specificationga ko‘ra, zamonaviy SVG versiyasi gradientlar, maskalar, filtrlar, ixtiyoriy joylashtiriladigan matn, JavaScript orqali interaktivlik va CSS va SMIL orqali animatsiyani qo‘llab-quvvatlaydi. SVG DOMga to‘liq huquqli HTML elementi sifatida integratsiya qilingan bo‘lib, bu har bir grafik primitivni dasturiy ravishda boshqarish imkonini beradi.
Mobil ishlanmada SVG iOSda UIGraphicsImageRenderer va Androidda VectorDrawable orqali ham qo‘llaniladi — ikkala format SVGga o‘xshash tavsiflarni GPUda apparat tezlashtirilgan rastrlarga aylantiradi.
SVG 1.0 2001-yilda, SVG 1.1 2003-yilda W3C tavsiyasiga aylandi, SVG 2.0 2012-yildan rivojlanish bosqichida. SVG 2 ning asosiy yangiligi CSS bilan chuqurroq integratsiya, compositing va blending modes qo‘llab-quvvatlashi hamda HTMLda namespace prefikslarisiz SVGdan foydalanish imkoniyatidir.
SVG 2 hali Recommendation maqomiga erishmagan bo‘lsa-da, zamonaviy brauzerlar uning funksionalligining ko‘p qismini allaqachon qo‘llab-quvvatlaydi. Chrome, Safari, Firefox va Edge SVG 1.1ni deyarli to‘liq va SVG 2 ning muhim qismini qo‘llab-quvvatlaydi.
SVG ikki o‘lchovli grafikani tavsiflash üchun elementlar to‘plamini taqdim etadi. Har bir elementning joylashuvi, o‘lchami va vizual ko‘rinishini belgilaydigan atributlari bor. Atributlar XML atributlari yoki CSS xususiyatlari sifatida belgilanishi mumkin.
Path elementi — SVGning eng kuchli va moslashuvchan elementidir. d atributi buyruqlar ketma-ketligini o‘z ichiga oladi: M (moveTo), L (lineTo), C (cubic Bezier curve), Q (quadratic Bezier curve), A (arc), Z (close path). Har bir buyruqning mutlaq yoki nisbiy shakli bor (katta yoki kichik harf).
SVG shuningdek elementlarni <g> orqali guruhlashni qo‘llab-quvvatlaydi. Guruh vizual atributlarni (fill, stroke, transform) barcha bola elementlarga meros qoldiradi. Bu butun shakllar to‘plamiga yagona uslubni qo‘llash va ularning joylashuvini bitta transform orqali boshqarish imkonini beradi.
SVG bilan rastr formatlari (JPEG, PNG, WebP) o‘rtasidagi asosiy farq — ma’lumotni saqlash usulidir. Rastr har bir piksel rangini qat’iy o‘lchamli to‘rda saqlaydi. SVG shakllarni qayta tiklash üchun matematik buyruqlarni saqlaydi. Bu farq formatlarning barcha afzalliklari va kamchiliklarini belgilaydi.
| Xususiyat | SVG | Rastr (PNG/JPEG) |
|---|---|---|
| Masshtablash | Sifat yo‘qotmasdan | Kattalashtirishda sifat yo‘qoladi |
| Fayl hajmi | Oddiy shakllar üchun kichik | Rezolyutsiyaga bog‘liq |
| Tahrirlash | Matn orqali, kod bilan | Grafik muharrir talab qiladi |
| CSS stillashtirish | To‘liq qo‘llab-quvvatlash | Yo‘q |
| Animatsiya | CSS + SMIL | Faqat GIF yoki APNG |
| Fotosuratlar | Mos kelmaydi | Ideal |
| Ikonkalar/logotiplar | Ideal | Ortiqcha |
| Brauzer qo‘llab-quvvatlashi | 96%+ | 100% |
HTTP Archive, 2025 ma’lumotlariga ko‘ra, veb-saytlarning 68%i SVGdan ikonkalar, 34%i illyustratsiyalar va 22%i logotiplar üchun foydalanadi. SVG ikonkasining o‘rtacha hajmi 0.5–2 KB ni tashkil qiladi, holbuki o‘xshash sifatdagi rastr ikonka PNG formatida 5–20 KB ni tashkil qiladi.
Fotosuratlar va murakkab rastr tasvirlar üchun SVG mos kelmaydi — XML tavsifining hajmi ekvivalent JPEG hajmidan oshib ketadi. SVGning tavsiya etilgan qo‘llanish sohasi: ikonkalar, logotiplar, illyustratsiyalar, sxemalar, grafiklar, adaptiv dizaynli interfeys elementlari.
SVG — Retina ekranlarda va brauzerning istalgan masshtabida aniq ko‘rinishi kerak bo‘lgan interfeys elementlari üchun optimal tanlovdir. Rastr — fotosuratlar, murakkab teksturalar va millionlab ranglarga ega tasvirlar üchun, bu yerda vektor tavsifi asossiz murakkab bo‘lardi.
Gibrid yondashuv — interfeys elementlari üchun SVG va foto mazmun üchun WebP/AVIF kombinatsiyasi — sifat va sahifa yuklash samaradorligi o‘rtasida eng yaxshi muvozanatni beradi.
Inline SVG — SVG belgilashini to‘g‘ridan-to‘g‘ri HTML hujjatiga joylashtirish, alohida fayl sifatida <img> yoki background-image orqali emas. Inline SVGning afzalligi shundaki, SVG elementlari DOMning bir qismiga aylanadi va CSS orqali stillashtirilishi, JavaScript orqali boshqarilishi va qo‘shimcha server so‘rovlarisiz animatsiya qilinishi mumkin.
SVG shadow DOMda izolyatsiya qilingan <img src="icon.svg"> dan farqli o‘laroq, inline SVG ota-ona hujjatning ranglari va shriftlarini meros qilib oladi. Bu, masalan, har bir holat üchun alohida fayl yuklamasdan CSS :hover psevdosinifi orqali ikonka ustiga kursorni olib borganda rangini o‘zgartirish imkonini beradi.
CSS-Tricks ma’lumotlariga ko‘ra, inline SVG zamonaviy veb-ilovalarda ikonkalardan foydalanishning tavsiya etilgan usulidir. fill, stroke, stroke-width CSS xususiyatlari to‘g‘ridan-to‘g‘ri SVG elementlariga qo‘llaniladi. CSS orqali moslashtirish üchun, asl SVGda fill va stroke inline atributlari sifatida belgilanmagan bo‘lishi muhim — aks holda CSS ularni bekor qila olmaydi.
SVG-spritlar keshlash muammosini hal qiladi: barcha ikonkalar bitta faylda yig‘iladi, brauzer uni bir marta yuklaydi, alohida ikonkalar sprite ichidagi kerakli elementning id-sini ko‘rsatuvchi <use> orqali ulanadi.
CSS SVG animatsiyasi — brauzerda vektor grafikasini animatsiya qilishning eng keng tarqalgan va samarali usulidir. transform, opacity va fill kabi CSS xususiyatlari SVG elementlariga HTML elementlari kabi qo‘llaniladi. Ixtiyoriy yo‘l bo‘ylab animatsiya üchun CSS offset-path xususiyati ishlatiladi.
SMIL (Synchronized Multimedia Integration Language) — CSSdan mustaqil, SVG-ichki animatsiya mexanizmidir. <animate>, <animateTransform> va <animateMotion> elementlari JavaScript va CSSsiz istalgan SVG atributini animatsiya qilish imkonini beradi. SMIL animatsiyasi brauzerning kadr chastotasi bilan sinxronlashtiriladi.
MDN Web Docsga ko‘ra, SMIL barcha zamonaviy brauzerlarda qo‘llab-quvvatlanadi, ammo CSS animatsiyasi oldindan bashorat qilish mumkin bo‘lgan va samaraliroq hisoblanadi. SMIL üchun asosiy stsenariy — CSS orqali erishib bo‘lmaydigan atributlarning animatsiyasi, masalan <path> elementining d (path) atributi.
JavaScript + requestAnimationFrame SVG animatsiyasi üstidan maksimal nazorat beradi. Veb-ishlab chiquvchilar murakkab animatsiya ketma-ketliklari, vaqt jadvallari va toza CSS bilan amalga oshirish qiyin bo‘lgan easing funksiyalari üchun GSAP va Anime.js kutubxonalaridan foydalanadilar.
Birinchi namuna — asosiy SVG elementlaridan foydalanib oddiy uy ikonkasi. Barcha shakllar rect va polyline:
<!-- Inline SVG icon -->
<svg viewBox="0 0 100 100" width="48" height="48" xmlns="http://www.w3.org/2000/svg">
<rect x="20" y="50" width="60" height="40" fill="#4A90D9" />
<rect x="35" y="65" width="30" height="25" fill="#fff" />
<polyline points="10,50 50,15 90,50" fill="none" stroke="#4A90D9" stroke-width="6" />
</svg>
Ikkinchi namuna — CSS orqali loaderning aylanish animatsiyasi. Uzluksiz kontur yaratish üchun stroke-dasharray atributi bilan <circle> ishlatilgan:
<!-- CSS animated spinner -->
<svg class="spinner" viewBox="0 0 50 50" width="40" height="40">
<circle cx="25" cy="25" r="20" fill="none"
stroke="#4A90D9" stroke-width="4"
stroke-dasharray="125.6 31.4" />
</svg>
<style>
.spinner circle {
animation: spin 1.5s linear infinite;
transform-origin: center;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
</style>
Uchinchi namuna — GSAP kutubxonasi orqali konturni silliq chizish üchun path animatsiyasi. GSAP stroke-dashoffset atributi bilan ishlab, chiziqning paydo bo‘lish effektini yaratadi:
// GSAP bilan yo‘lni chizish
import gsap from "gsap";
const path = document.querySelector("#myPath");
const length = path.getTotalLength();
gsap.set(path, {
strokeDasharray: length,
strokeDashoffset: length
});
gsap.to(path, {
strokeDashoffset: 0,
duration: 2,
ease: "power2.out"
});
Tez-tez beriladigan savollar
SVG — piksellarni emas, balki matematik shakllarni saqlaydigan tasvir formatidir: chiziqlar, doiralar, to‘rtburchaklar va egri chiziqlar. Shuning üchun SVG rasmini istalgan o‘lchamga kattalashtirish mumkin — aniq qoladi. SVG fayli istalgan kod muharririda tahrirlanishi mumkin bo‘lgan matnli XML koddir.
SVG kamroq joy egallaydi (0.5–2 KB, PNG üchun 5–20 KB), Retina ekranlarida sifatni yo‘qotmaydi, animatsiya va CSS orqali stillashtirishni qo‘llab-quvvatlaydi. Interfeys ikonkalari üchun SVG standart hisoblanadi. PNG fotosuratlar va murakkab rang o‘tishlari bo‘lgan tasvirlar üchun ko‘proq mos keladi.
Belgilashda fill atributlarisiz inline SVG dan foydalaning, so‘ngra CSSda fill ni belgilang: svg:hover path { fill: red; }. Agar SVG <img> orqali ulangan bo‘lsa, rangni CSS orqali o‘zgartirib bo‘lmaydi — inline SVG yoki <use href="#id"> bilan SVG-spritdan foydalaning.
viewBox — elementning haqiqiy o‘lchamlaridan qat’i nazar SVGning virtual koordinatalar tizimidir. Format: viewBox="minX minY width height". Masalan, viewBox="0 0 100 100" 100×100 koordinatalar to‘rini yaratadi. Barcha ichki koordinatalar ushbu to‘rga nisbatan belgilanadi va konteyner o‘lchamlari o‘zgarganda avtomatik ravishda masshtablanadi.
Ha. SVG CSS animatsiyasini (keyframes, transition) va SMIL — <animate>, <animateTransform> va <animateMotion> elementlari bilan ichki animatsiya mexanizmini qo‘llab-quvvatlaydi. SMIL CSS orqali erishib bo‘lmaydigan atributlarni, masalan <path> elementining path atributini animatsiya qilish imkonini beradi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.