SVG (ад англ. Scalable Vector Graphics — якая маштабуецца вектарная графіка) — мова разметкі вектарнай графікі, якая маштабуецца, створаная Кансорцыумам Сусветнай павуціны (W3C) і ўваходзіць у падмноства пашыраецца мовы разметкі XML, прызначаны для апісання двухмернай вектарнай і змяшанай векторно/растравай графікі ў фармаце XML. Падтрымлівае як нерухомую, так і аніміраваныя інтэрактыўную графіку — ці, у іншых тэрмінах, дэкларатыўную і скрыптовую. Не падтрымлівае апісанне трохмерных аб’ектаў (не блытаць з імітацыяй трохвымернасці шляхам святлаценю). Гэта адкрыты стандарт, які з’яўляецца рэкамендацыяй кансорцыума W3C — арганізацыі, якая распрацавала такія стандарты, як HTML і XHTML. У аснову SVG ляглі мовы разметкі VML і PGML. Распрацоўваецца з 1999 года. У 2001 годзе выйшла версія 1.0, у 2011 — версія 1.1, якая застаецца актуальнай да сённяшняга дня. У цяперашні час у актыўнай распрацоўцы знаходзіцца версія 2.
Апісанне шляхоў (англ. path). Дазваляе задаць любую фігуру кампактным радком, якая апісвае шлях ад пачатковай кропкі да канчатковай праз любыя прамежкавыя каардынаты. Радок з дадзенымі задаецца атрыбутам d
тэга path
і змяшчае каманды, закадаваныя наборам літар і лікаў. Літара вызначае тып каманды, колькасці — яе параметры (часцей за ўсё — каардынаты). Каманды дазваляюць апісваць фігуры, якія складаюцца з адрэзкаў прамых (L
, H
, V
), крывых Без’е (C
, S
, Q
, T
) і дуг (A
). Прыклад, які апісвае зорку з 5 ліній, змяшчае радок дадзеных з камандамі M
(англ. moveto — перамясціць) і L
(англ. lineto — намаляваць лінію), якія змяшчаюць у якасці аргументаў каардынаты кропак па X і Y. У версіях SVG да 1.2 ўключна апісанне шляхоў магчыма толькі ў пікселях.
Апісанне асноўных геаметрычных фігур (шматвугольнікі, прамавугольнікі, акружнасці і г. д.).
Шырокі спектр візуальных уласцівасцяў, якія можна прымяніць да постацяў і шляхоў: афарбоўка, празрыстасць, зкругленне кутоў і г д.
Інтэрактыўнасць. На кожны асобны элемент і на цэлае малюнак можна павесіць апрацоўшчык падзей (клік, перамяшчэнне, націск клавішы і гд.), такім чынам, карыстальнік можа кіраваць малюнкам (напрыклад — перамяшчаць мышкай некаторыя элементы[2]).
Анімацыя і сцэнары. З дапамогай ECMAScript або JavaScript можна апісваць нават самыя складаныя сцэнары, звязаныя з матэматычнымі вылічэннямі каардынатаў і прапорцый фігур. Разам з інтэрактыўнасцю і SMIL анімацыяй гэта дае вельмі шырокія магчымасці для распрацоўнікаў вэб-графікі.
Першы радок — стандартны XML-загаловак, аб’ява (англ. XML declaration), якая паказвае версію XML (version) (звычайна «1.0») і кадоўку знакаў (encoding):
У другім і трэцім радках павінен размяшчацца загаловак DOCTYPE, які вызначае тып дакумента (англ. Document Type Definitions) DTD:
На жаль, у некаторых выпадках пры ўжыванні Mozilla Firefox з убудаваным просмотрщиком SVG ўтрыманне аб’явы DOCTYPE можа быць крыніцай памылак. Маюцца рэкамендацыі не выкарыстоўваць дэкларацыю DOCTYPE ў SVG версій 1.0. Замест гэтага рэкамендавана ўключаць атрыбут baseProfile ў каранёвай элемент са значэннем «full»[3].
Калі па якім-то прычынах дэкларацыя DOCTYPE ў дакуменце неабходная, рэкамендавана выкарыстоўваць пустую дэкларацыю, як у прыкладзе.
У чацвёртым радку размяшчаецца каранёвай элемент дакумента з указаннем прасторы імёнаў SVG.
Далей ідзе астатні тэкст дакумента укладзены ў каранёвай элемент, дзе, уласна, размяшчаюцца элементы, якія апісваюць змест кодируемой сцэны.
Завяршаецца дакумент заўсёды закрыццем каранёвага тэга </svg>
.
Заўвага: Гэты код выконваецца аднолькава ў Mozilla Firefox 2.0.0.11 і ў Internet Explorer 6.0.2900.2180 (SVG Document Adobe Systems Inc.)
Яшчэ адзін прыклад — прастакутнік з закругленымі кутамі, які запаўняе ўсю вобласць адлюстравання:
Жоўтая зорка:
Паколькі код SVG займае даволі шмат месца, была створана «абгортка» SVGZ, калі SVG сціскаюць з дапамогай gzip, а атрыманага файла прысвойваюць пашырэнне «SVGZ».
SVG добра сціскаецца, паколькі гэта тэкставы XML-дакумент, які мае рэгулярную структуру.
браўзэр | версія |
---|---|
Internet Explorer | 9+[4] |
Mozilla Firefox | 1.5+[5] |
Netscape Navigator | 9.0+ |
Google Chrome | 3.0+ |
Safari | 4.0+ |
Opera | 8.0+ |