Snap.svg предоставляет мощные средства для создания и управления
векторным графическим текстом на веб-странице. Основной объект для
работы с текстом — это элемент text, который создаётся
методом paper.text(x, y, string):
var s = Snap(800, 600);
var txt = s.text(100, 100, "Пример текста");
Здесь x и y определяют координаты начальной
точки текста, а третий параметр — строку, которую нужно отобразить.
После создания текста можно управлять его стилями, шрифтом и
начертанием.
Snap.svg позволяет изменять шрифты с помощью метода
attr, применяя CSS-подобные свойства. Основные
параметры:
font-family — задаёт семейство шрифта.
txt.attr({
'font-family': 'Arial, sans-serif'
});font-size — размер шрифта. Можно указывать в пикселях, пунктах или других CSS-единицах:
txt.attr({
'font-size': '24px'
});font-weight — толщина текста, принимает значения
'normal', 'bold', 'bolder',
'lighter' или числовые значения от 100 до 900:
txt.attr({
'font-weight': 'bold'
});font-style — стиль текста:
'normal', 'italic',
'oblique':
txt.attr({
'font-style': 'italic'
});Для выделения текста Snap.svg поддерживает свойства, напрямую влияющие на визуальное отображение:
fill — цвет текста. Принимает стандартные CSS-значения:
txt.attr({
'fill': '#FF5733'
});stroke и stroke-width — позволяют обводить буквы линией:
txt.attr({
'stroke': '#000000',
'stroke-width': 1
});text-anchor — задаёт выравнивание текста относительно координат:
'start' — слева (по умолчанию)'middle' — по центру'end' — справаtxt.attr({
'text-anchor': 'middle'
});<tspan>Snap.svg поддерживает многострочный текст с помощью элемента
<tspan>. Он создаётся методом paper.text
с последующей вставкой tspan:
var t = s.text(100, 100, "");
t.add(Snap.tspan("Первая строка", 0, 0));
t.add(Snap.tspan("Вторая строка", 0, 20));
Первый параметр <tspan> — текст.
Второй и третий — смещение относительно родительского элемента
(dx, dy).
Для разных строк можно задавать разные стили, шрифты и цвета:
t.selectAll('tspan')[1].attr({
'fill': 'blue',
'font-style': 'italic'
});Snap.svg поддерживает трансформации текста через метод
transform. Можно комбинировать масштабирование, поворот,
сдвиг и наклон:
txt.transform("r45t100,50s2,2");
r45 — поворот на 45°t100,50 — смещение на 100 по x и 50 по ys2,2 — масштабирование по x и y в 2 разаТрансформации можно применять как к самому тексту, так и к его
<tspan>, создавая сложные визуальные эффекты.
Snap.svg корректно работает с внешними веб-шрифтами через подключение CSS:
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
После подключения достаточно указать шрифт через
font-family:
txt.attr({
'font-family': 'Roboto, sans-serif',
'font-weight': 700
});
Важный момент — браузер должен загрузить шрифт до отображения текста.
Для динамических анимаций часто используют window.onload
или события шрифта FontFaceObserver.
Snap.svg позволяет анимировать атрибуты шрифта и начертания через
метод animate. Примеры анимации:
txt.animate({'font-size': '48px'}, 1000, mina.easeinout);
txt.animate({'fill': '#3498db'}, 1500, mina.linear);
txt.animate({
'fill': '#e74c3c',
transform: 'r360'
}, 2000, mina.bounce);
Snap.svg обеспечивает плавную интерполяцию между значениями шрифта и атрибутами начертания.
class в Snap.svg.<tspan> позволяет
создавать сложные типографические эффекты, включая разноцветные слова и
разные начертания в одной строке.stroke) и её толщина
(stroke-width) позволяют выделять текст на фоне сложной
графики.transform и animate делает
текст динамичным, создавая визуальные интерактивные эффекты без
Canvas.Этот набор инструментов делает Snap.svg полноценным решением для работы с текстом, позволяя контролировать шрифты, начертания и визуальные эффекты в интерактивной векторной графике.