CSS-свойство `stroke-dashoffset`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в различных версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Свойство stroke-dashoffset CSS задаёт смещение начальной точки отрисовки связанного SVG-элемента массива штрихов. Если это свойство задано, оно переопределяет атрибут элемента stroke-dashoffset.
Это свойство применяется к любой фигуре SVG или элементу с текстовым содержимым (полный список см. в описании stroke-dashoffset), но, поскольку оно наследуется, его можно применить, например, к элементу <g>, чтобы оно также повлияло на обводки дочерних элементов.
Синтаксис
/* Keyword */ stroke-dashoffset: none; /* Length and percentage values */ stroke-dashoffset: 2; stroke-dashoffset: 2px; stroke-dashoffset: 2%; /* Global values */ stroke-dashoffset: inherit; stroke-dashoffset: initial; stroke-dashoffset: revert; stroke-dashoffset: revert-layer; stroke-dashoffset: unset;
Значения
-
<number>Нестандартное - Число единиц SVG, размер которых определяется текущей системой единиц. Если заданное значение не равно
0, начальная точка смещается от начала массива штрихов к другой точке внутри него. Таким образом, положительные значения смещают шаблон штрихов и промежутков назад, а отрицательные — вперёд. -
<length> - Пиксельные единицы обрабатываются так же, как единицы SVG (см.
<number>выше), а длины, заданные в единицах размера шрифта, напримерem, рассчитываются относительно значения размера текста SVG-элемента; поведение других единиц длины может зависеть от браузера. Эффект смещения для любого значения такой же, как для значений<number>(см. выше). -
<percentage> - Процентные значения относятся к нормализованной диагонали текущей области просмотра SVG, которая вычисляется по формуле , а не к общей длине контура обводки. Отрицательные значения недопустимы.
Формальное определение
| Начальное значение | 0 |
|---|---|
| Применяется к |
элементам <circle>, <ellipse>, <line>, <path>, <polygon>, <polyline> и <rect> внутри <code>svg</code> |
| Наследуется | да |
| Процентные значения | относятся к нормализованной диагонали текущей области просмотра SVG, заданной атрибутом viewBox, или самой области просмотра, если атрибут <code>viewBox</code> не указан |
| Вычисленное значение | абсолютное значение <length> или <percentage>; числовые значения сначала преобразуются в абсолютные длины |
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
stroke-dashoffset = <length-percentage> | <number> <length-percentage> = <length> | <percentage>
Примеры
Смещение штрихов
Чтобы показать, как можно смещать штрихи, сначала зададим пять одинаковых контуров. Для каждого с помощью атрибута SVG stroke-dasharray зададим массив штрихов: штрих длиной 20 единиц и промежуток длиной 3 единицы. (То же самое можно было бы сделать с помощью CSS-свойства stroke-dasharray.) Затем зададим для каждого контура отдельное смещение штрихов с помощью CSS.
<svg viewBox="0 0 100 50" width="500" height="250">
<rect x="10" y="5" width="80" height="30" fill="#eeeeee" />
<g stroke="dodgerblue" stroke-width="2" stroke-dasharray="20,3">
<path d="M 10,10 h 80" />
<path d="M 10,15 h 80" />
<path d="M 10,20 h 80" />
<path d="M 10,25 h 80" />
<path d="M 10,30 h 80" />
</g>
</svg>
path:nth-of-type(1) {
stroke-dashoffset: 0;
}
path:nth-of-type(2) {
stroke-dashoffset: -5;
}
path:nth-of-type(3) {
stroke-dashoffset: 5;
}
path:nth-of-type(4) {
stroke-dashoffset: 5px;
}
path:nth-of-type(5) {
stroke-dashoffset: 5%;
}
По порядку:
- Для первого из пяти контуров задано нулевое смещение — это поведение по умолчанию.
- Для второго контура задано смещение
-5, которое перемещает начальную точку массива на пять единиц назад от нулевой точки. Визуально шаблон штрихов смещается вперёд на пять единиц; поэтому в начале контура видны последние две единицы штриха, а затем промежуток длиной три единицы. - Для третьего контура задано смещение
5, то есть начальная точка штрихов находится на пять единиц внутри шаблона штрихов. Визуально шаблон штрихов смещается назад на пять единиц; поэтому в начале контура видны последние пятнадцать единиц штриха, а затем промежуток длиной три единицы. - Для четвёртого контура задано смещение
5px, которое даёт тот же эффект, что и значение5(см. предыдущий пример). - Для пятого, последнего контура задано смещение
5%. Оно очень похоже на два предыдущих примера, но всё же отличается от них. Процентные значения рассчитываются относительно диагонали области просмотра SVG, поэтому результат может меняться в зависимости от размера и соотношения сторон этой области просмотра.
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
stroke-dashoffset |
1 |
≤15 |
1.5 |
15 |
4 |
18 |
4 |
14 |
3.2 |
1.0 |
4.4 |
3.2 |
См. также
- Атрибут SVG
stroke-dashoffset - CSS-свойство
stroke-dasharray - CSS-свойство
stroke
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/stroke-dashoffset