– это формат векторных изображений, основанный на XML.
<?xml version="1.0">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg">
…
</svg>
<svg>
</svg>
<?xml version=”1.0" encoding=”UTF-8" standalone=”no”?>
<svg width=”24px” height=”25px” viewBox=”0 0 24 25"
version=”1.1" xmlns=”>http://www.w3.org/2000/svg"
xmlns:xlink=”http://www.w3.org/1999/xlink"
xmlns:sketch=”http://www.bohemiancoding.com/sketch/ns">
add
Created with Sketch.
...
</svg>
<object data="your.svg"
type="image/svg+xml" width="199" height="200">
<iframe src="your.svg"
width="199px" height=“200px">
/*Css backgrounds*/
.elem {
background-image: url(your.svg);
}
<svg width="200px" height="200px">
…
</svg>
<svg width="300" height="240">
<rect width="220" height="130" fill="skyblue"
stroke="#ff1919" stroke-width="10" x="15" y="15"/>
</svg>
<svg width="230" height="140">
<rect x="5" y="5" width="220" height="130"
fill="yellowgreen"rx="30" ry="30"/>
<rect x="225" y="5" width="220" height="130"
fill="#ee204d" rx="60" ry="30"/>
</svg>
<circle r="65" cx="70" cy="70" fill="orangered"/>
<ellipse rx="110" ry="60" cx="115" cy="70" fill="gold" />
<line x1="220" y1="10" x2="20" y2="130"/>
<polyline points="5,135 30,5 55,135 80,5, 105,135 130,5, 155,135 180,5, 205,135 230,5, 255,135"
fill="none"/>
<polygon points="70,5 90,41 136,48 103,80 111,126
70,105 29,126 36,80 5,48 48,41"/>
<rect x="50" y="20" width="100" height="100"
transform="translate(50, 50) scale(1.5, 2) skew(30)"/>
<rect x="50" y="20" width="100" height="100" fill="gold"
stroke="orange"
stroke-width="5" transform="rotate(45 100 70)"/>
<rect x="0" y="0" width="20" height="80"
transform="rotate(90 20 80) rotate(90 20 0)"/>
<path d="M 10,110 L 10,10 L 40,50 L 70,10 L 100,50
L 130,10 L 130,110 z" fill="gold" stroke="orange"
stroke-width="5"/>
<path stroke="orange" stroke-width="3"
d="M 20,20 L150,150
<!--В нижнем — относительные-->
m -100,0 l150,100
<!--Верхний регистр – абсолютные координаты-->
M 70,20 L200,150"/>
<path stroke="orange" stroke-width="3"
d="M 20,20 L80,20 20,100 M150,50 L50,150 150,120"/>
<path stroke="lightseagreen" stroke-width="5"
d="M 200,20 h 160 v 160 h -80 v -80 h -80 z"/>
<path stroke="red" stroke-width="5"
d="M 20,20 H 160 V 160 H -80 V -80 H -80 z"/>
<svg width="115" height="190"></svg>
<!-- x y width height-->
<svg width="200" height="200" viewBox="0 0 233 295">
...
</svg>
Размеры рабочей области 200х200
Размеры картинки 233х295
<svg width="200" height="200" viewBox="100 100 233 295">...
</svg>
– служит для указания направления, начала, середины, конца линии (line, polyline, path, polygon, rect)
<marker id="circleMarker"
viewBox="0 0 50 50" refX="25" refY="25" orient="auto">
<circle r="25" fill="red" cx="25" cy="25"/>
</marker>
<path d="M100,100 L100,300 L444,200 L100,500"
marker-mid="url(#circleMarker)"
<marker id="myMarkerMid" viewBox="0 0 50 50"
refX="25" refY="25"
orient="auto"
markerUnits="strokeWidth"
markerWidth="3" markerHeight="3">
<rect x="5" y="5" width="50" height="30" fill="yellow"/>
</marker>
<path d="M100,100 L100,300 L444,200 L100,500"
marker-start="url(#circleMarker)"
marker-mid=“url(#myMarkerMid)"
marker-end="url(#circleMarker)"/>
– для хранения содержимого, которое не будет отображаться при определении.
<defs>
<marker id="Triangle"
viewBox="0 0 10 10"
refX="5" refY="5"
markerWidth="6"
markerHeight="6"
orient="auto">
<circle r="5" fill="white" cx="5" cy="5"/>
</marker>
</defs>
– используется для логической группировки графических элементов.
...
...
– применяться для повторного использования как отдельных элементов, так и групп элементов.
<use x="100" y="100" xlink:href="#bird"/>
<use xlink:href="#bird" transform="translate(250, 250)
scale(0.5)"/>
– это группа фигур, представляющая собой единое целое.
<symbol id="s-path">
<path d="M 30 15 170 15" stroke-width="30">
</symbol>
– заливка фигур осуществляется с помощью атрибута fill.
<rect fill="red"/>
– определяет как будут заливаться сложные фигуры, имеющие пересечения внутри себя.
<g fill="gold" fill-rule="nonzero">
<path d="...">
</g>
<g fill="gold" fill-rule="evenodd">
<path d="...">
</g>
fill-rule="nonzero"
fill-rule="evenodd"
<rect stroke="gold" stroke-width="10"/>
<rect stroke="yellowgreen" stroke-width="10%"/>
<symbol id="s-path">
<path d="M 30 15 170 15" stroke-width="30">
</symbol>
<use y="20" stroke-linecap="butt"/>
<use y="85" stroke-linecap="round"/>
<use y="150" stroke-linecap="square"/>
<use xlink:href="#s-corner" stroke-linejoin="miter">
<use xlink:href="#s-corner" stroke-linejoin="round"/>
<use xlink:href="#s-corner" stroke-linejoin="bevel"/>
– управляет видом пунктирной обводки.
stroke-dasharray="1"
stroke-dasharray="1 3"
stroke-dasharray="5%"
stroke-dasharray="1 5"
stroke-dasharray="2 7 6"
stroke-dasharray="5"
stroke-dasharray="12% 5%"
– позволяет задать смещение пунктирной обводки относительно первоначального положения.
<linearGradient id="grad1"
x1="0%" y1="0%"
x2="100%" y2="0%">
<stop offset="0%" stop-color="#BBC42A" />
<stop offset="100%" stop-color="#ED6E46" />
</linearGradient>
<rect fill= "url(#grad1)" width="400" height="100"/>
<radialGradient id="RadialGradient2"
cx="0.5" cy="0.5" r="0.5">
<stop offset="0%" stop-color="red"/>
<stop offset="100%" stop-color="blue"/>
</radialGradient>
<rect fill="url(#RadialGradient2)" width="10" height="10"/>
– это некоторый бесконечно повторяющийся узор.
<pattern id="basicPattern" x="0" y="0"
width="40" height="40" patternUnits="userSpaceOnUse">
<circle cx="20" cy="20" r="20" fill= "#BBC42A" />
</pattern>
<rect width="200" height="70" fill="url(#basicPattern)" />
– позволяют скрывать части изображений с помощью другого изображения.
– для обрезки использует только контуры фигур, игнорируя заливки и обводки
<clipPath id="clipping-star">
<polygon id="Star-1" points="...">
</clipPath>
<g clip-path="url(#clipping-star)">
<image xlink:href="image.jpg" width="200" height="300"/>
</g>
– в них учитываются и заливки, и обводки, и яркость содержимого.
<mask id="mask">
<g stroke="gray" stroke-width="12" fill="white">
<circle cx="33%" cy="30%" r="20%" />
<circle cx="52%" cy="62%" r="32%" />
</g>
</mask>
– это механизм применения различных эффектов к svg-элементам.
<defs>
<filter id="myFilter1">
<!-- размытие по Гауссу -->
<feGaussianBlur stdDeviation="10"/>
</filter>
</defs>
<image xlink:href="/img.jpg" filter="url('#filter-blur')"
width="318" height="240"/>
<svg width="400" height="300" viewbox="0 0 400 300">
<feColorMatrix in="a1" type="saturate" values="0"/>
<image xlink:href="image.jpg" width="100%" height="100%" />
</svg>
<fecomponenttransfer>
<feFuncR type="linear" slope="5" intercept="-0.5" />
<feFuncG type="linear" slope="0.2" />
<feFuncB type="linear" slope="0.2" />
<feFuncA type="identity" />
</fecomponenttransfer>
type="table"
<fecomponenttransfer>
<fefuncr type="table" tablevalues="1 0" />
<fefuncg type="table" tablevalues="1 0" />
<fefuncb type="table" tablevalues="1 0" />
</fecomponenttransfer>
type="discrete"
<fecomponenttransfer>
<fefuncr type="discrete" tablevalues="1 0 1 1" />
<fefuncg type="discrete" tablevalues="1 0 1 1" />
<fefuncb type="discrete" tablevalues="1 0 0 1" />
</fecomponenttransfer>
type="gamma"
<fecomponenttransfer>
<fefuncr type="gamma" amplitude="2" exponent="1" offset="0.1" />
<fefuncg type="gamma" amplitude="1" exponent="1.2" offset="0.1" />
<fefuncB type="gamma" amplitude="1.4" exponent="1" offset="0.1" />
</fecomponenttransfer>
– позволяет умножить каждый пиксель исходного изображения в виде вектора, образованного каналами R, G, B, A.
| R' | | a00 a01 a02 a03 a04 | | R |
| G' | | a10 a11 a12 a13 a14 | | G |
| B' | = | a20 a21 a22 a23 a24 | * | B |
| A' | | a30 a31 a32 a33 a34 | | A |
| 1 | | 0 0 0 0 1 | | 1 |
<fecolormatrix type="matrix"
values="0.343 0.669 0.119 0 0
0.249 0.626 0.130 0 0
0.172 0.334 0.111 0 0
0 0 0 1 0" />
<fecolormatrix type="saturate" values="0"/>
<fecolormatrix type="hueRotate" values="240"/>
<feConvolveMatrix
order="3"
kernelMatrix=" 1 -1 1
-1 -1 -1
1 -1 1">
– можно осуществлять арифметические и логические операции над слоями в svg.
<feComposite in="source1" in2="source2" operator="xor"/>
<feBlend in="source1" in2="source2" mode="lighten"/>
<text font-size="150" x="0" fill="#1e88e5" y="150">
Текст
</text>
<defs>
<path id="textpath" d="M10.057,20.024c0,0,10.99,51.603,102.248,51.603c91.259,0,136.172,53.992,136.172,53.992"/>
</defs>
<text y="20" x="10" fill="red">
<textPath xlink:href="#textpath">
Lorem ipsum dolor sit amet consectetur.
</textPath>
</text>
<text fill="url(#p-stars)" class="text">Text</text>
– CSS может использоваться для стилизации, наложения масок и фильтров, а так же анимации svg-изображений.
rect {
fill: red;
filter: url(#blur)
}