stroke-dasharray
Базовая линия Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Свойство stroke-dasharray CSS определяет шаблон из тире и пробелов, используемый для отрисовки обводки SVG-фигуры. При наличии оно переопределяет атрибут элемента stroke-dasharray.
Это свойство применяется к любой SVG-фигуре или элементу текстового содержимого (см. stroke-dasharray для полного списка), но в качестве наследуемого свойства может применяться к элементам, таким как <g>, и всё ещё оказывать своё влияние на обводку дочерних элементов.
Синтаксис
/* Keywords */ stroke-dasharray: none; /* Numeric, length, and percentage values */ stroke-dasharray: 2px, 5px; stroke-dasharray: 20%, 50%; stroke-dasharray: 2, 5; /* The following two rules are equivalent */ stroke-dasharray: 2, 5, 3; stroke-dasharray: 2, 5, 3, 2, 5, 3; /* Global values */ stroke-dasharray: inherit; stroke-dasharray: initial; stroke-dasharray: revert; stroke-dasharray: revert-layer; stroke-dasharray: unset;
Значения
Значение представляет собой список значений <number>, <length>, и/или <percentage>, разделенных запятыми и/или пробелами, которые определяют длины чередующихся тире и пробелов, или ключевое слово none. Если указано нечётное количество значений, всё значение будет повторено, чтобы установить чётное количество значений.
none-
Обводка будет нарисована без тире. Значение по умолчанию.
<number>-
Число единиц SVG, размер которых определяется текущим единичным пространством. Отрицательные значения недопустимы.
<length>-
Единицы пикселей обрабатываются так же, как единицы SVG (см.
<number>, выше), а длины, основанные на шрифте, такие какem, вычисляются относительно значения элемента SVG для размера текста; влияние других единиц длины может зависеть от браузера. Отрицательные значения недопустимы. <percentage>-
Проценты относятся к нормализованной диагонали текущего SVG-видимого поля, которая вычисляется как . Отрицательные значения недопустимы.
Формальное определение
| Начальное значение | none |
|---|---|
| Применяется к |
<circle>, <ellipse>, <line>, <path>, <polygon>, <polyline>, и <rect> элементам в svg
|
| Наследуется | да |
| Проценты | относятся к нормализованному диагональному измерению текущего SVG-видимого поля, применённого viewbox, или к самому видимому полю, если `viewBox` не задан |
| Вычисленное значение | Список значений абсолютных длин или процентов, чисел, преобразованных в абсолютные длины, или указанное ключевое слово |
| Тип анимации | повторяемый список |
Формальный синтаксис
Примеры
Базовый массив тире
Этот пример демонстрирует базовое использование свойства stroke-dasharray с использованием значений <number> , разделённых пробелами.
HTML
Сначала мы создаём базовую SVG-прямоугольную форму. К этой прямоугольной форме применяется красная обводка шириной 2.
<svg viewBox="0 0 100 50" width="500" height="250">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
Мы определяем шаблон тире для обводки: десять единиц тире, за которыми следуют пять единиц пробела. Это означает, что промежутки между тире будут вполовину короче самих тире.
rect {
stroke-dasharray: 10 5;
}
Результаты
Там, где обводка поворачивает угол, шаблон продолжается, так сказать. В левом верхнем углу, где начинающаяся и заканчивающаяся обводка встречаются, начальное тире длиной десять единиц, похоже, соединяется с частью шаблона тире, видимой в конце пути, создавая то, что выглядит как линия, длиннее десяти единиц, изгибающаяся вокруг угла.
Повтор массива тире
В этом примере используется нечётное количество значений <number> , разделённых запятыми, чтобы продемонстрировать, как значение повторяется, если указано нечётное число значений, чтобы установить чётное число значений.
HTML
В данном случае мы определяем две прямоугольные формы.
<svg viewBox="0 0 100 100" width="500" height="500">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
<rect
x="10"
y="60"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
Для первой прямоугольной формы мы определяем dasharray из 5, 5, 1, который требует пяти единиц тире, пяти единиц пробела и одной единицы тире. Однако, поскольку это нечётное число, весь набор чисел повторяется, создавая значение, идентичное тому, которое применено ко второй прямоугольной форме.
rect:nth-of-type(1) {
stroke-dasharray: 5, 5, 1;
}
rect:nth-of-type(2) {
stroke-dasharray: 5, 5, 1, 5, 5, 1;
}
Результат
Причина, по которой требуется чётное число, заключается в том, что каждый массив тире начинается с тире и заканчивается пробелом. Таким образом, определённый шаблон — это тире длиной пять единиц, пробел длиной пять единиц, тире длиной одна единица, пробел длиной пять единиц, тире длиной пять единиц и пробел длиной одна единица. В результате отрисованной обводки каждый случай пробела длиной одна единица между двумя тире длиной пять единиц указывает на место, где массив тире начинается заново.
Процентные и пиксельные значения
В этом примере показано использование <percentage> и <length> значений в значении свойства stroke-dasharray.
HTML
Как и в предыдущем примере, мы определяем две прямоугольные формы.
<svg viewBox="0 0 100 100" width="500" height="500">
<rect
x="10"
y="10"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
<rect
x="10"
y="60"
width="80"
height="30"
fill="none"
stroke="red"
stroke-width="2" />
</svg>
CSS
На этот раз вместо набора чисел мы используем пиксельные единицы и проценты.
rect:nth-of-type(1) {
stroke-dasharray: 5px, 5px, 1px;
}
rect:nth-of-type(2) {
stroke-dasharray: 5%, 5%, 1%;
}
Результаты
Результаты по существу ничем не отличаются от результатов в предыдущем примере.
Спецификации
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
stroke-dasharray |
≤80 | 80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
none |
≤80 | 80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/stroke-dasharray