W3docs

CSS-свойство stroke

Как использовать CSS-свойство stroke для отрисовки контура элемента. Описание свойства и примеры значений.

CSS-свойство stroke рисует контур (линию) SVG-фигуры или фрагмента текста. Если fill закрашивает внутреннюю часть фигуры, то stroke закрашивает её границу — вместе они определяют, как отображается каждый путь, окружность, прямоугольник и текстовый элемент SVG.

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

Когда его использовать?

stroke влияет только на SVG-контент — для обычных HTML-элементов, таких как <div> или <p>, оно не работает. Используйте его, когда вы:

  • рисуете иконки, графики или диаграммы с помощью встроенного <svg>;
  • анимируете линию, которая «рисует себя сама» (сочетайте stroke с stroke-dasharray и stroke-dashoffset);
  • обводите SVG-текст без его заливки.

Список именованных веб-цветов можно найти в разделе цветов HTML.

CSS-свойство или атрибут представления

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

<!-- presentation attribute -->
<path stroke="#1c87c9" d="M5 20 l215 0" />

<!-- CSS, via a style block or stylesheet -->
<path style="stroke: #1c87c9;" d="M5 20 l215 0" />

Если используются оба способа, побеждает CSS: встроенный style (или любое правило таблицы стилей) перекрывает атрибут представления. Это позволяет задать цвет по умолчанию в разметке и переопределять его через CSS — например, при наведении.

Информация

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

Начальное значениеnone
Применяется кФигурам и текстовым элементам.
НаследуетсяДа.
АнимируетсяНет.
ВерсияСпецификация SVG 1.1
DOM-синтаксисObject.stroke = "#1c87c9";

Синтаксис

Синтаксис CSS stroke

stroke: color | url | none | context-fill | context-stroke | initial | inherit;

Пример использования свойства stroke:

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

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke property example</h2>
    <svg height="100" width="500">
      <g fill="none">
        <path stroke="#8ebf42" d="M5 20 l215 0" />
        <path stroke="#1c87c9" d="M5 40 l215 0" />
        <path stroke="#666666" d="M5 60 l215 0" />
      </g>
    </svg>
  </body>
</html>

Результат

пример использования свойства stroke

Пример с фигурами и CSS

Свойство stroke необязательно писать как атрибут — здесь оно задаётся из блока <style> и применяется сразу к нескольким фигурам. Обратите внимание на fill: none, чтобы отображался только контур:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .outline {
        fill: none;
        stroke: #1c87c9;
        stroke-width: 4px;
      }
      circle.outline {
        stroke: #8ebf42;
      }
    </style>
  </head>
  <body>
    <h2>Stroke from a CSS rule</h2>
    <svg height="120" width="300">
      <rect class="outline" x="10" y="10" width="100" height="100" />
      <circle class="outline" cx="220" cy="60" r="50" />
    </svg>
  </body>
</html>

Значения

ЗначениеОписание
noneОбводка не применяется.
colorЗадаёт сплошной цвет. Можно использовать названия цветов, шестнадцатеричные коды, rgb(), rgba(), hsl(), hsla().
urlСсылка URL на элемент-сервер закраски, определяющий способ закраски.
context-fillИспользует значение fill из контекстного элемента.
context-strokeИспользует значение stroke из контекстного элемента.
initialУстанавливает свойство в значение по умолчанию.
inheritНаследует свойство от родительского элемента.

Начальное значение — none, то есть фигура без stroke рисуется без контура вообще — даже если stroke-width задан.

Связанные свойства обводки

stroke задаёт только цвет контура. Чтобы управлять его внешним видом, сочетайте его с:

  • stroke-width — толщина линии;
  • stroke-dasharray — паттерн штриховки вместо сплошной линии;
  • stroke-dashoffset — начальная точка паттерна штриховки (ключ к анимациям рисования);
  • stroke-linecap — форма концов линии.

Частые ошибки

  • Ничего не отображается. Если stroke-width равен 0 (значение по умолчанию), контур невидим независимо от цвета. Всегда задавайте ширину.
  • Фигура залита. Если нужен только контур, установите fill: none — иначе внутренняя часть по умолчанию закрашивается чёрным.
  • Не работает на <div>. stroke действует только на SVG-графику и текстовые элементы: <altGlyph>, <circle>, <ellipse>, <line>, <path>, <polygon>, <polyline>, <rect>, <text>, <textPath>, <tref> и <tspan>.

Практика

Практика
Каково назначение CSS-свойства 'stroke' и как оно используется?
Каково назначение CSS-свойства 'stroke' и как оно используется?
Was this page helpful?