SVG — ay isang vector image format na batay sa XML, na binuo ng W3C consortium. Hindi tulad ng mga raster format na JPEG at PNG, ang SVG ay nag-iimbak ng mathematical na paglalarawan ng mga hugis: mga linya, kurba, bilog at teksto. Ito ay nagpapahintulot sa pag-scale ng imahe sa anumang laki nang walang pagkawala ng kalidad. Ayon sa MDN Web Docs, 2025, ang SVG ay sinusuportahan sa lahat ng modernong browser at ginagamit para sa mga icon, ilustrasyon, animation at graph. Sa web development, ang SVG ay naging pamantayan para sa mga adaptive na interface dahil sa maliit na sukat at kakayahang mag-style sa pamamagitan ng CSS.
Mga Pangunahing
SVG — isang vector graphics format na batay sa XML, na lumitaw noong 2001 bilang rekomendasyon ng W3C. Hindi tulad ng mga raster format, ang SVG ay naglalarawan ng imahe sa pamamagitan ng geometric primitives: mga punto, linya, kurba at polygon. Ang SVG file ay isang ordinaryong text XML document na maaaring basahin, i-edit at i-compress gamit ang mga standard na tool.
Ang arkitektura ng SVG ay sumasaklaw ng ilang pangunahing konsepto. viewBox ay nagtatakda ng virtual coordinate system, independyente sa aktwal na laki ng elemento. Halimbawa, ang viewBox="0 0 100 100" ay lumilikha ng square grid na 100×100, kung saan ang lahat ng coordinate ay nakapirmi. Kapag nagbago ang lapad o taas ng container, ang nilalaman ay nag-scale nang proporsyonal.
Ayon sa W3C SVG 2 Specification, ang modernong bersyon ng SVG ay sumusuporta sa gradients, mask, filter, text na may arbitrary positioning, interactivity sa pamamagitan ng JavaScript at animation sa pamamagitan ng CSS at SMIL. Ang SVG ay isinama sa DOM bilang isang ganap na HTML elemento, na nagpapahintulot sa programmatic na pamamahala ng bawat graphic primitive.
Sa mobile development, ang SVG ay ginagamit din sa iOS sa pamamagitan ng UIGraphicsImageRenderer at sa Android sa pamamagitan ng VectorDrawable — parehong format ay nagko-convert ng mga paglalarawang katulad ng SVG sa hardware-accelerated rasters sa GPU.
Ang SVG 1.0 ay naging rekomendasyon ng W3C noong 2001, SVG 1.1 noong 2003, SVG 2.0 ay nasa ilalim ng pag-unlad mula noong 2012. Ang pangunahing inobasyon ng SVG 2 ay mas malalim na integrasyon sa CSS, suporta para sa compositing at blending modes, at ang posibilidad ng paggamit ng SVG sa HTML nang walang namespace prefixes.
Kahit na ang SVG 2 ay hindi pa umabot sa status na Recommendation, sinusuportahan na ng modernong browser ang karamihan sa functionality nito. Ang Chrome, Safari, Firefox at Edge ay may halos kumpletong suporta para sa SVG 1.1 at malaking bahagi ng SVG 2.
Ang SVG ay nagbibigay ng isang set ng mga elemento para sa paglalarawan ng dalawang-dimensional na graphics. Ang bawat elemento ay may mga attribute na tumutukoy sa posisyon, laki at visual na anyo nito. Ang mga attribute ay maaaring tukuyin bilang XML attributes o sa pamamagitan ng CSS properties.
Elementong path — ang pinakamakapangyarihan at nababaluktot na elemento ng SVG. Ang attribute na d ay naglalaman ng pagkakasunod-sunod ng mga command: M (moveTo), L (lineTo), C (cubic Bezier curve), Q (quadratic Bezier curve), A (arc), Z (close path). Bawat command ay may absolute o relative form (malaki o maliit na letra).
Sinusuportahan din ng SVG ang pag-grupo ng mga elemento sa pamamagitan ng <g>. Ang grupo ay nagmamana ng visual attributes (fill, stroke, transform) sa lahat ng child elements. Ito ay nagpapahintulot sa paglapat ng pare-parehong estilo sa buong set ng mga hugis at pamamahala ng kanilang posisyon sa pamamagitan ng isang transform.
Ang pangunahing pagkakaiba sa pagitan ng SVG at mga raster format (JPEG, PNG, WebP) — ang paraan ng pag-iimbak ng impormasyon. Ang raster ay nag-iimbak ng kulay ng bawat pixel sa isang grid na may nakapirming laki. Ang SVG ay nag-iimbak ng mathematical commands para sa pag-reproduce ng mga hugis. Ang pagkakaibang ito ay tumutukoy sa lahat ng mga bentahe at disadvantage ng mga format.
| Katangian | SVG | Raster (PNG/JPEG) |
|---|---|---|
| Pag-scale | Walang pagkawala ng kalidad | Pagkawala ng kalidad sa pagpapalaki |
| Laki ng file | Maliit para sa simpleng hugis | Depende sa resolution |
| Pag-edit | Tekstwal, sa pamamagitan ng code | Nangangailangan ng graphic editor |
| CSS styling | Buong suporta | Hindi |
| Animation | CSS + SMIL | GIF o APNG lamang |
| Mga larawan | Hindi angkop | Mainam |
| Icon/logo | Mainam | Labis |
| Suporta sa browser | 96%+ | 100% |
Ayon sa HTTP Archive, 2025, 68% ng mga website ay gumagamit ng SVG para sa mga icon, 34% para sa mga ilustrasyon at 22% para sa mga logo. Ang average na laki ng SVG icon ay 0.5–2 KB, samantalang ang raster icon na may katulad na kalidad ay 5–20 KB sa PNG format.
Para sa mga larawan at kumplikadong raster images, ang SVG ay hindi angkop — ang laki ng XML description ay lalampas sa laki ng katumbas na JPEG. Ang inirerekomendang lugar ng aplikasyon ng SVG: mga icon, logo, ilustrasyon, scheme, graph, mga elemento ng interface na may adaptive na disenyo.
SVG — pinakamainam na pagpipilian para sa mga elemento ng interface na dapat maging matalas sa Retina screen at sa anumang scale ng browser. Raster — para sa mga larawan, kumplikadong texture at mga imahe na may milyun-milyong kulay, kung saan ang vector description ay hindi makatuwirang kumplikado.
Hybrid na diskarte — kombinasyon ng SVG para sa mga elemento ng interface at WebP/AVIF para sa photo content — ay nagbibigay ng pinakamahusay na balanse sa pagitan ng kalidad at pagganap ng pag-load ng pahina.
Inline SVG — ay ang pag-embed ng SVG markup nang direkta sa HTML document, hindi bilang isang hiwalay na file sa pamamagitan ng <img> o background-image. Ang bentahe ng inline SVG ay ang SVG elements ay nagiging bahagi ng DOM at maaaring i-style sa pamamagitan ng CSS, pamahalaan sa pamamagitan ng JavaScript at i-animate nang walang karagdagang mga request sa server.
Hindi tulad ng <img src="icon.svg"> kung saan ang SVG ay nakahiwalay sa shadow DOM, ang inline SVG ay nagmamana ng mga kulay at font ng parent document. Ito ay nagpapahintulot, halimbawa, na baguhin ang kulay ng icon kapag nag-hover sa pamamagitan ng CSS pseudo-class :hover nang hindi naglo-load ng hiwalay na file para sa bawat estado.
Ayon sa CSS-Tricks, ang inline SVG ay ang inirerekomendang paraan ng paggamit ng mga icon sa modernong web applications. Ang CSS properties na fill, stroke, stroke-width ay inilalapat nang direkta sa SVG elements. Para sa pag-customize sa pamamagitan ng CSS, mahalaga na sa orihinal na SVG, ang fill at stroke ay hindi nakatakda bilang inline attributes — kung hindi, hindi sila maaaring i-override ng CSS.
SVG-sprites ay lumulutas ng problema sa pag-cache: lahat ng icon ay kinokolekta sa isang file, nilo-load ito ng browser nang isang beses, at ang mga indibidwal na icon ay ikinokonekta sa pamamagitan ng <use> na may pagbanggit ng id ng kinakailangang elemento sa loob ng sprite.
CSS SVG animation — ang pinakakaraniwan at mahusay na paraan ng pag-animate ng vector graphics sa browser. Ang CSS properties tulad ng transform, opacity at fill ay inilalapat sa SVG elements tulad ng sa HTML elements. Para sa animation kasama ang isang arbitraryong path, ginagamit ang CSS property na offset-path.
SMIL (Synchronized Multimedia Integration Language) — isang built-in na mekanismo ng animation sa SVG, independyente sa CSS. Ang mga elementong <animate>, <animateTransform> at <animateMotion> ay nagpapahintulot sa pag-animate ng anumang SVG attribute nang walang JavaScript at CSS. Ang SMIL animation ay garantisadong naka-sync sa frame rate ng browser.
Ayon sa MDN Web Docs, ang SMIL ay sinusuportahan sa lahat ng modernong browser, ngunit ang CSS animation ay itinuturing na mas predictable at mahusay. Ang pangunahing senaryo para sa SMIL — animation ng mga attribute na hindi maa-access sa pamamagitan ng CSS, halimbawa d (path) ng elementong <path>.
JavaScript + requestAnimationFrame ay nagbibigay ng maximum na kontrol sa SVG animation. Ang mga web developer ay gumagamit ng mga library na GSAP at Anime.js para sa mga kumplikadong sequence ng animation na may mga timeline at easing functions na mahirap ipatupad sa pamamagitan ng purong CSS.
Unang halimbawa — simpleng icon ng bahay gamit ang mga pangunahing SVG elements. Lahat ng hugis ay rect at 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>
Pangalawang halimbawa — rotation animation ng loader sa pamamagitan ng CSS. Gumagamit ng <circle> na may attribute na stroke-dasharray para gumawa ng putol-putol na contour:
<!-- 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>
Pangatlong halimbawa — path animation sa pamamagitan ng library na GSAP para sa maayos na pag-drawing ng contour. Ang GSAP ay gumagana sa attribute na stroke-dashoffset, na lumilikha ng epekto ng paglitaw ng linya:
// Gumuhit ng path gamit ang 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"
});
Mga Madalas Itanong
SVG ay isang format ng larawan na nag-iimbak hindi ng pixels, kundi ng mathematical na mga hugis: mga linya, bilog, parihaba at kurba. Kaya ang SVG na larawan ay maaaring palakihin sa anumang laki — mananatiling matalas. Ang SVG file ay text XML code na maaaring i-edit sa anumang code editor.
Ang SVG ay kumukuha ng mas kaunting espasyo (0.5–2 KB kumpara sa 5–20 KB para sa PNG), hindi nawawalan ng kalidad sa Retina screens, sumusuporta sa animation at styling sa pamamagitan ng CSS. Para sa mga icon ng interface, ang SVG ay pamantayan. Ang PNG ay mas angkop para sa mga larawan at imahe na may kumplikadong transition ng kulay.
Gumamit ng inline SVG na walang fill attributes sa markup, pagkatapos ay itakda ang fill sa CSS: svg:hover path { fill: red; }. Kung ang SVG ay naka-connect sa pamamagitan ng <img>, ang kulay ay hindi mababago sa pamamagitan ng CSS — gumamit ng inline SVG o SVG-sprite na may <use href="#id">.
viewBox ay isang virtual coordinate system ng SVG, independyente sa aktwal na laki ng elemento. Format: viewBox="minX minY width height". Halimbawa, viewBox="0 0 100 100" ay lumilikha ng coordinate grid na 100×100. Lahat ng internal na coordinate ay tinutukoy kaugnay sa grid na ito at awtomatikong nag-scale kapag nagbago ang laki ng container.
Oo. Sinusuportahan ng SVG ang CSS animation (keyframes, transition) at SMIL — isang built-in na mekanismo ng animation na may mga elementong <animate>, <animateTransform> at <animateMotion>. Ang SMIL ay nagpapahintulot sa pag-animate ng mga attribute na hindi maa-access sa pamamagitan ng CSS, halimbawa path ng elementong <path>.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din