SVG-фигуры и трансформации
Писать SVG руками довольно просто. Используем фигуры: rect
, polygon
, circle
, ellipse
, а также line
, polyline
и path
.
Задаем выбранную фигуру, определяем её размеры и координаты, затем добавляем фон и обводку.
Следует отметить, что писать код руками совершенно не обязательно: с этим гораздо лучше справятся векторные редакторы, например, мощный, но платный Adobe Illustrator, бесплатный, но не такой удобный Inkscape, немного платный, но довольно симпатичный Sketch. Но имеет смысл хотя бы попробовать, потому что это а) интересно, б) полезно: навыки могут пригодиться, если надо нарисовать что-то простое, подправить код в отсутствие векторного редактора или вы хотите взаимодействовать с SVG через JavaScript.
Размеры и координаты задаются для разных фигур по-разному, а вот фон и обводка — одинаковы для всех:
fill
— заливка. Можно задать цвет любым способом. Прозрачность — none
или transparent
. Цвет по умолчанию — черный;
stroke
— цвет обводки;
stroke-width
— толщина обводки, по умолчанию — 1. Без stroke
не работает.
Больше параметров можно найти в спецификации w3.org/TR/SVG/painting.html#StrokeProperties.
Ниже можно увидеть примеры простых SVG-фигур и трансформации, которые к ним можно применить.
Rect
x
,y
— координаты левого верхнего угла фигуры;
width
, height
— ширина и высота прямоугольника.
Закругленные уголки задаются параметрами rx
и ry
. Если задан только один из параметров, скругление по вертикали и по горизонтали будет одинаковым:
Если заданы оба параметра (и они таки разные), радиус скругления будет разным:
Polygon
В points
задаются x,y
-координаты вершин фигуры, через пробел.
polygon
замыкается сам по себе, последнюю точку можно не указывать.
Circle
r
— радиус круга;
cx
, cy
— координаты центра круга.
rx
, ry
— горизонтальный и вертикальный радиусы эллипса;
cx
, cy
— координаты центра эллипса.
Более сложные фигуры можно сделать из сочетания простых:
При этом стиль фигур можно задать один раз для всей группы, а не отдельно для каждой фигуры:
Также можно рисовать простыми линиями.
Line
x1
, y1
, x2
, y2
— координаты начала и конца линии.
Polyline
В points
задаются x,y
-координаты точек, каждая точка через пробел.
Для более сложных линий и фигур существует тег path
, но эту тему стоит рассмотреть отдельно.
Transform
SVG-фигуры можно видоизменять с помощью свойства transform
.
Возможные значения: translate
, scale
, rotate
, skewX
, skewY
, matrix
.
Пример:
Можно задавать несколько трансформаций через запятую или через пробел.
translate(tx [ty])
Если второй параметр не задан, он равен 0.
translate(100)
translate(70, 70)
scale(sx [sy])
Если второй параметр не задан, он равен первому.
scale(1.5)
scale(1.5, .5)
rotate(rotate-angle [cx cy])
Если координаты центра поворота не заданы, они равны 0 0
— это левый верхний угол SVG-изображения.
rotate(45)
rotate(45 100 100)
skewX(skew-angle), skewY(skew-angle)
skewX(5)
skewY(5)
matrix(a b c d e f)
matrix(.3 0 0 .95 55 25)
- Ссылки по теме:
- Basic Shapes
- The ‘transform’ attribute
- Browsers support for SVG
- Adobe Illustrator
- Sketch
- Inkscape
- Метки:
- SVG