W3docs

CSS свойство stroke-width

Как использовать CSS свойство stroke-width для задания толщины обводки SVG-фигур и текста. Синтаксис, значения и примеры.

CSS свойство stroke-width задаёт толщину контура («обводки»), рисуемого вокруг SVG-фигуры или текста. Обводка — это закрашенная линия, следующая по пути фигуры; stroke-width определяет, насколько эта линия толстая.

На этой странице рассматриваются синтаксис, допустимые значения (длины и проценты), взаимодействие stroke-width с атрибутами SVG-представления, а также особенности, связанные с единицами измерения и масштабированием через viewBox.

Зачем использовать stroke-width

В SVG контур и внутренняя область фигуры закрашиваются раздельно: свойство stroke закрашивает контур, а fill — внутреннюю область. Обводка видна только тогда, когда её ширина ненулевая, поэтому именно stroke-width делает контур видимым. Используйте его, чтобы делать рамки толще или тоньше, рисовать тонкие сетки или создавать жирные обведённые иконки и текст.

stroke-width и SVG-атрибут

Ширину обводки можно задать двумя способами: как атрибут SVG-представления в разметке (stroke-width="3") или как CSS-свойство. Когда присутствуют оба варианта, CSS побеждает — CSS-правило (или встроенный style) имеет приоритет над атрибутом представления. Именно поэтому значение, заданное в разметке SVG, может казаться «проигнорированным»: его перекрывает таблица стилей.

<!-- The CSS stroke-width: 1px wins over the attribute stroke-width="5". -->
<circle cx="5" cy="5" r="3" stroke-width="5" style="stroke-width: 1px;" />
Информация

Атрибут stroke-width является атрибутом представления и может применяться к любому элементу, однако оказывает эффект только на следующие элементы: <altGlyph>, <circle>, <ellipse>, <line>, <path>, <polygon>, <polyline>, <rect>, <text>, <textPath>, <tref> и <tspan>.

Информация

Единицы измерения, такие как px или em, обязательны, кроме случая, когда значение равно 0.

Начальное значение1
Применяется кЭлементам-фигурам и текстовому содержимому.
НаследуетсяДа.
АнимируетсяДа.
ВерсияSVG 1.1 Specification
DOM СинтаксисObject.strokeWidth = "0.5";

Синтаксис

stroke-width: length | percentage | initial | inherit;

Ширина отцентрирована по пути: половина рисуется внутри края фигуры, половина — снаружи. Таким образом, stroke-width равный 4 у окружности с радиусом 3 добавляет 2 единицы за пределы радиуса и перекрывает 2 единицы внутрь.

Пример свойства stroke-width:

Пример кода CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 1px;" />
    </svg>
  </body>
</html>

Результат

CSS stroke-width

Пример свойства stroke-width со значением «length»:

Ещё один пример кода CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 3px;" />
    </svg>
  </body>
</html>

Пример свойства stroke-width со значением «%»:

Процентное значение вычисляется относительно диагонали SVG — конкретно диагонали viewport (sqrt(width² + height²) / sqrt(2)), а не размера самой фигуры. Это делает процентную ширину удобной, когда нужно, чтобы обводка масштабировалась вместе с рисунком.

Пример процентного значения CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 2%;" />
    </svg>
  </body>
</html>

Значения

ЗначениеОписание
lengthЗадаёт ширину обводки.
percentageЗадаёт ширину обводки в %.
initialУстанавливает значение свойства по умолчанию.
inheritНаследует значение свойства от родительского элемента.

Замечания и особенности

  • Нулевая ширина скрывает обводку. stroke-width: 0 ничего не рисует, даже если задан цвет stroke.
  • Единицы обязательны для ненулевых CSS-значений. Внутри style/таблицы стилей используйте 2px, 0.5em и т. д. Форма без единиц (stroke-width="3") допустима только как SVG-атрибут, где число интерпретируется в единицах пространства пользователя.
  • Обводка располагается по обе стороны пути. Поскольку половина ширины выходит за край фигуры, толстая обводка может выйти за пределы viewBox и обрезаться. Добавьте отступ в viewBox, если контур обрезается.
  • Она масштабируется вместе с viewBox. Значение stroke-width в единицах пользователя растёт и уменьшается при масштабировании SVG под его контейнер. Чтобы сохранить постоянную экранную толщину вне зависимости от масштаба, добавьте SVG-атрибут vector-effect="non-scaling-stroke" к элементу.

Связанные свойства

  • stroke — цвет (заливка) контура.
  • stroke-linecap — форма концов открытых путей.
  • stroke-dasharray — превращает обводку в пунктирную линию.
  • stroke-dashoffset — смещает начало паттерна штрихов.
  • fill — цвет внутренней области фигуры.

Практика

Практика
Что делает CSS свойство 'stroke-width'?
Что делает CSS свойство 'stroke-width'?
Was this page helpful?