SVG — је векторски формат слике заснован на XML-у, који је развио конзорцијум W3C. За разлику од растерских формата JPEG и PNG, SVG чува математички опис облика: линија, кривуљи, кругова и текста. То омогућује мењање слике на било коју величину без губитка квалитета. Према MDN Web Docs, 2025, SVG је подржан у свим савременим прегледачима и користи се за иконице, илустрације, анимације и графиконе. У веб развоју, SVG је постао стандард за адаптивне интерфејсе захваљујући малој величини и могућности стилизације кроз CSS.
Главно
SVG — формат векторске графике заснован на XML-у, који се појавио 2001. године као препорука W3C. За разлику од растерских формата, SVG описује слику кроз геометријске примитиве: тачке, линије, кривуље и вишеуглове. SVG датотека је обичан XML текстуални документ који се може читати, уређивати и компримовати стандардним алатима.
Архитектура SVG-а укључује неколико кључних концепата. viewBox дефинише виртуелни координатни систем независан од стварних величина елемента. На пример, viewBox="0 0 100 100" ствара квадратну мрежу 100×100, у којој су све координате фиксне. При промени ширине или висине контејнера, садржај се пропорционално мења.
Према W3C SVG 2 Specification, модерна верзија SVG-а подржава градијенте, маске, филтере, текст са произвољним позиционирањем, интерактивност кроз JavaScript и анимацију кроз CSS и SMIL. SVG је интегрисан у DOM као пуноправни HTML елемент, што омогућује програмско управљање сваким графичким примитивом.
У мобилном развоју, SVG се такође користи у iOS-у кроз UIGraphicsImageRenderer и у Android-у кроз VectorDrawable — оба формата конвертују описе сличне SVG-у у хардверски убрзане растере на GPU-у.
SVG 1.0 је постао препорука W3C 2001. године, SVG 1.1 2003. године, SVG 2.0 је у развоју од 2012. године. Главна иновација SVG 2 је дубља интеграција са CSS-ом, подршка compositing и blending modes, као и могућност коришћења SVG-а у HTML-у без namespace префикса.
Иако SVG 2 још није достигао статус Recommendation, савремени прегледачи већ подржавају већину његове функционалности. Chrome, Safari, Firefox и Edge имају готово потпуну подршку за SVG 1.1 и значајан део SVG 2.
SVG пружа скуп елемената за описивање дводимензионалне графике. Сваки елемент има атрибуте који одређују његов положај, величину и визуелни изглед. Атрибути могу бити задати као XML атрибути или кроз CSS својства.
Path елемент — најснажнији и најфлексибилнији SVG елемент. Атрибут d садржи секвенцију команди: M (moveTo), L (lineTo), C (cubic Bezier curve), Q (quadratic Bezier curve), A (arc), Z (close path). Свака команда има апсолутни или релативни облик (велико или мало слово).
SVG такође подржава груписање елемената кроз <g>. Група наслеђује визуелне атрибуте (fill, stroke, transform) на све потомке. То омогућава примену јединственог стила на цели скуп облика и управљање њиховим положајем кроз један transform.
Основна разлика између SVG-а и растерских формата (JPEG, PNG, WebP) — начин чувања информација. Растер чува боју сваког пиксела у мрежи фиксне величине. SVG чува математичке команде за репродукцију облика. Ова разлика одређује све предности и недостатке формата.
| Карактеристика | SVG | Растер (PNG/JPEG) |
|---|---|---|
| Мењање | Без губитка квалитета | Губитак квалитета при повећању |
| Величина датотеке | Мала за једноставне облике | Зависи од резолуције |
| Уређивање | Текстуално, кроз код | Захтева графички уређивач |
| CSS стилизација | Пуна подршка | Не |
| Анимација | CSS + SMIL | Само GIF или APNG |
| Фотографије | Није подесно | Идеално |
| Иконице/логои | Идеално | Непотребно |
| Подршка прегледача | 96%+ | 100% |
Према HTTP Archive, 2025, 68% веб сајтова користи SVG за иконице, 34% за илустрације и 22% за логое. Просечна величина SVG иконице износи 0.5–2 KB, док је растерска иконица сличног квалитета 5–20 KB у PNG формату.
За фотографије и сложене растерске слике, SVG није подесан — величина XML описа ће премашити величину еквивалентног JPEG-а. Препоручује подручје примене SVG-а: иконице, логои, илустрације, шеме, графикони, елементи интерфејса са адаптивним дизајном.
SVG — оптималан избор за елементе интерфејса који морају бити оштри на Retina екранима и при било којој размери прегледача. Растер — за фотографије, сложене текстуре и слике са милионима боја, где би векторски опис био неоправдано сложен.
Хибридни приступ — комбинација SVG-а за елементе интерфејса и WebP/AVIF за фотографски садржај — пружа најбољи биланс између квалитета и перформанси учитавања странице.
Inline SVG — је уграђивање SVG ознака директно у HTML документ, а не као посебна датотека кроз <img> или background-image. Предност inline SVG-а је што SVG елементи постају део DOM-а и могу бити стилизовани кроз CSS, управљани кроз JavaScript и анимирани без додатних захтева ка серверу.
За разлику од <img src="icon.svg">, где је SVG изолован у shadow DOM-у, inline SVG наслеђује боје и фонтове родитељског документа. То омогућава, на пример, промену боје иконице при преласку мишем кроз CSS псеудокласу :hover без учитавања посебне датотеке за свако стање.
Према CSS-Tricks, inline SVG је препоручени начин коришћења иконица у модерним веб апликацијама. CSS својства fill, stroke, stroke-width примењују се директно на SVG елементе. За прилагођавање кроз CSS, важно је да у изворном SVG-у fill и stroke нису постављени као inline атрибути — у супротном, CSS неће моћи да их прегази.
SVG спрајтови решавају проблем кеширања: све иконице су сакупљене у један фајл, прегледач га учитава једном, а појединачне иконице се повезују кроз <use> навођењем id-а потребног елемента унутар спрајта.
CSS анимација SVG-а — најраширенији и најефикаснији начин анимирања векторске графике у прегледачу. CSS својства као што су transform, opacity и fill примењују се на SVG елементе исто као на HTML елементе. За анимацију дуж произвољне путање користи се CSS својство offset-path.
SMIL (Synchronized Multimedia Integration Language) — уграђени механизам анимације у SVG-у, независан од CSS-а. Елементи <animate>, <animateTransform> и <animateMotion> омогућавају анимирање било којих SVG атрибута без JavaScript-а и CSS-а. SMIL анимација је гарантовано синхронизована са фреквенцијом кадрова прегледача.
Према MDN Web Docs, SMIL је подржан у свим савременим прегледачима, али се CSS анимација сматра предвидивијом и ефикаснијом. Главни сценарио за SMIL — анимација атрибута који нису доступни кроз CSS, на пример d (path) елемента <path>.
JavaScript + requestAnimationFrame пружа максималну контролу над анимацијом SVG-а. Веб развојници користе библиотеке GSAP и Anime.js за сложене секвенце анимација са временским линијама и easing функцијама које је тешко реализовати чистим CSS-ом.
Први пример — једноставна иконица кућице коришћењем основних SVG елемената. Све форме су rect и 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>
Други пример — анимација ротације лоадера кроз CSS. Користи се <circle> са атрибутом stroke-dasharray за стварање испрекиданог контура:
<!-- 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>
Трећи пример — анимација path-а кроз библиотеку GSAP за глатко цртање контура. GSAP ради са атрибутом stroke-dashoffset, стварајући ефекат појављивања линије:
// Нацртај путању са GSAP
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"
});
Често постављана питања
SVG је формат слике који не чува пикселе, већ математичке облике: линије, кругове, правоугаонике и кривуље. Зато се SVG слика може повећати на било коју величину — остаће оштра. SVG датотека је текстуални XML код који се може уређивати у било којем уређивачу кода.
SVG заузима мање простора (0.5–2 KB наспрам 5–20 KB за PNG), не губи квалитет на Retina екранима, подржава анимацију и стилизацију кроз CSS. За иконице интерфејса, SVG је стандард. PNG је бољи за фотографије и слике са сложеним прелазима боја.
Користите inline SVG без fill атрибута у ознакама, затим поставите fill у CSS-у: svg:hover path { fill: red; }. Ако је SVG повезан кроз <img>, боја се не може променити кроз CSS — користите inline SVG или SVG спрајт са <use href="#id">.
viewBox је виртуелни координатни систем SVG-а, независан од стварних величина елемента. Формат: viewBox="minX minY width height". На пример, viewBox="0 0 100 100" ствара координатну мрежу 100×100. Све унутрашње координате су дефинисане у односу на ову мрежу и аутоматски се мењају при промени величине контејнера.
Да. SVG подржава CSS анимацију (keyframes, transition) и SMIL — уграђени механизам анимације са елементима <animate>, <animateTransform> и <animateMotion>. SMIL омогућава анимирање атрибута који нису доступни кроз CSS, на пример path елемента <path>.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође