Snap.svg предоставляет гибкий механизм работы с линиями, позволяя
задавать штриховые (dashed) линии через атрибут
stroke-dasharray. Этот атрибут управляет тем, как линии
разрываются на штрихи и промежутки, что особенно важно при создании
графических схем, диаграмм или декоративных элементов.
stroke-dasharraystroke-dasharray принимает строку или массив
чисел, определяющих последовательность черточек и
промежутков:
var s = Snap(400, 400);
var line = s.line(50, 50, 350, 50);
line.attr({
stroke: "#000",
strokeWidth: 4,
strokeDasharray: "10,5" // 10px линия, 5px пробел
});
[10, 5, 2, 5] создаёт паттерн, где первый элемент — длина
штриха, второй — пробела, третий — штриха, четвёртый — пробела, и так
далее. При необходимости последовательность повторяется по всей длине
линии."10,5,2,5" работает аналогично
массиву и может использоваться для удобства.Длина каждого штриха и промежутка задаётся в пикселях, и Snap.svg автоматически повторяет заданный паттерн вдоль всей линии. Если длина линии не кратна сумме элементов массива, последний штрих может быть усечён:
line.attr({
strokeDasharray: [15, 10]
});
stroke-dashoffsetstroke-dashoffset управляет смещением начала
паттерна вдоль линии:
line.attr({
strokeDasharray: "10,5",
strokeDashoffset: 5
});
"5,5" —
простая пунктирная линия."15,3" — подчёркивает контуры."10,5,2,5"
— чередование длинных и коротких штрихов.Использование массивов позволяет тонко настраивать повторяемые узоры без необходимости ручного рисования отдельных отрезков.
Атрибуты штрихов работают с любыми элементами Snap.svg, имеющими контур:
line — простые линии.rect и circle — обводка фигур.path — сложные кривые и многоугольники.Пример для круга:
var circle = s.circle(200, 200, 80);
circle.attr({
stroke: "#f00",
strokeWidth: 4,
fill: "none",
strokeDasharray: "20,10"
});
Пример для пути:
var path = s.path("M50 150 C150 50, 250 250, 350 150");
path.attr({
stroke: "#00f",
strokeWidth: 3,
fill: "none",
strokeDasharray: "15,5,5,5"
});
Snap.svg позволяет анимировать stroke-dashoffset,
создавая эффект движущегося штриха:
line.attr({ strokeDasharray: "10,5" });
Snap.animate(0, 15, function(val) {
line.attr({ strokeDashoffset: val });
}, 2000, mina.linear, function() {
Snap.animate(15, 0, function(val) {
line.attr({ strokeDashoffset: val });
}, 2000, mina.linear);
});
stroke-dasharray и
stroke-dashoffset для динамических эффектов.Эти механизмы делают Snap.svg мощным инструментом для создания визуально насыщенных графических интерфейсов, схем и декоративных элементов, где тип и структура пунктира играет ключевую роль.