Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Цвет SVG определяет, как отображаются фигуры, path-элементы, линии и текст. Цвет можно задавать через fill, stroke, атрибуты прозрачности, CSS-стили, именованные цвета, HEX, RGB, HSL, градиенты и паттерны. В этом учебнике объясняются основные правила цвета SVG и показано, как одни и те же цветовые значения работают с разными SVG-элементами.
Быстрый ответ: В SVG используйте fill для внутренней области фигур, path-элементов и текста, stroke – для контуров и линий, а opacity, fill-opacity или stroke-opacity – для прозрачности. Цветовые значения могут быть именованными цветами, HEX, RGB/RGBA, HSL/HSLA или ссылками url(#id) на градиенты и паттерны.
1<circle cx="50" cy="50" r="40" fill="#3498db" stroke="#1f4f72" stroke-width="4" />В этой статье вы узнаете, как: задавать цвета SVG через fill и stroke, выбирать форматы цветовых кодов, раскрашивать фигуры, path-элементы и текст, а также избегать типичных ошибок с цветом SVG.
В SVG применение цвета к элементу называется painting. Paint определяет, как элемент будет отрисован: с заливкой, с обводкой или с обоими типами окрашивания. Эти свойства управляют внутренней областью и контуром фигур, path-элементов и текста.
SVG поддерживает два распространенных способа задания цвета:
fill="red" или stroke="#00ff00", которые записываются прямо на элементе.style, например style="fill:#ff0000; stroke:green; stroke-width:2", который использует стандартный CSS-синтаксис.Оба подхода участвуют в правилах CSS cascade и inheritance, но имеют разный приоритет. Presentation attribute, например fill="red", легко читать и редактировать, а inline-объявление в style обычно переопределяет то же свойство, записанное как presentation attribute. Более подробное руководство по SVG-стилям и C# смотрите в статье
SVG CSS vs Inline Styles vs Presentation Attributes.
fill и strokeSVG использует два основных свойства для применения цвета:
| Свойство | Что окрашивает | Поведение по умолчанию |
|---|---|---|
fill | Внутреннюю область фигуры или замкнутого path-элемента | По умолчанию black |
stroke | Контур фигуры, линии или текста | По умолчанию не отображается |
Фигура может использовать каждое свойство отдельно или сочетать оба. Например, круг может иметь цветную заливку и видимую обводку, а элемент <line> окрашивается только через stroke. Замкнутые фигуры, такие как <circle>, <rect> и <polygon>, поддерживают и fill, и stroke.
При интерпретации цветовых значений SVG использует несколько важных правил:
fill не указано, фигура по умолчанию заполняется черным цветом.fill="none" или fill="transparent" делает внутреннюю область полностью прозрачной.stroke не указано, контур не рисуется, даже если задан stroke-width.fill и stroke принимают разные форматы цвета, включая именованные цвета, HEX, RGB/RGBA и HSL/HSLA.fill или stroke. В примерах ниже есть градиентная заливка текста, а в связанных ресурсах дана ссылка на отдельный учебник по градиентам.Кратко
Цвет можно записать несколькими способами. Лучший формат зависит от того, должен ли цвет быть читаемым, компактным, удобным для генерации в коде или частично прозрачным.
| Формат цвета | Когда использовать | Пример |
|---|---|---|
| Именованный цвет | Простые читаемые примеры и прототипы | fill="green" |
| HEX | Компактные стабильные цвета в иконках и иллюстрациях | fill="#00FF00" |
| RGB | Программные значения из красного, зеленого и синего каналов | fill="rgb(0,255,0)" |
| RGBA | Цвет и прозрачность в одном значении | fill="rgba(0,255,0,0.6)" |
| HSL | Дизайнерские настройки через тон, насыщенность и светлоту | fill="hsl(120,100%,50%)" |
| HSLA | HSL-цвет с прозрачностью | fill="hsla(120,100%,50%,0.6)" |
url(#id) | Градиенты и паттерны, определенные в <defs> | fill="url(#grad1)" |
В примерах ниже используется один и тот же круг, чтобы можно было сравнить только синтаксис цвета. Каждая строка задает зеленый fill и красный stroke в разном формате.
1<circle cx="50" cy="50" r="40" fill="green" stroke="red" />
2<circle cx="50" cy="50" r="40" fill="#00FF00" stroke="#FF0000" />
3<circle cx="50" cy="50" r="40" fill="rgb(0,255,0)" stroke="rgb(255,0,0)" />
4<circle cx="50" cy="50" r="40" fill="rgba(0,255,0,0.6)" stroke="rgba(255,0,0,0.8)" />
5<circle cx="50" cy="50" r="40" fill="hsl(120,100%,50%)" stroke="hsl(0,100%,50%)" />
6<circle cx="50" cy="50" r="40" fill="hsla(120,100%,50%,0.6)" stroke="hsla(0,100%,50%,0.8)" />Совет:
fill-opacity и stroke-opacity.<circle>, <path>, <line>, <polygon> или <text>.fill для цвета внутренней области замкнутых фигур, path-элементов и текста.stroke и stroke-width для контуров и цвета линий.url(#id) для градиентов и паттернов.fill-opacity, stroke-opacity, RGBA или HSLA, если нужна прозрачность.fill становится черным, а отсутствующий stroke означает, что контур не рисуется.Используйте онлайн-конвертер цветов, когда нужно получить точное значение цвета перед вставкой в SVG-атрибут fill, stroke, style или в gradient stop. Например, можно преобразовать фирменный RGB-цвет в HEX для компактной SVG-разметки или перевести HEX в HSL, чтобы предсказуемо менять тон, насыщенность или светлоту. Конвертер не редактирует SVG-файл напрямую: скопируйте полученное значение в нужный SVG-атрибут или CSS-объявление.
Круг – одна из самых простых SVG-фигур, поэтому он удобен для демонстрации цвета. Изменяя свойства fill и stroke, вы управляете цветом внутренней области круга, его контуром или обоими параметрами сразу.
В примере ниже показано несколько кругов с разными настройками цвета: от варианта по умолчанию до сочетания собственной заливки и видимой обводки.
1<svg height="200" width="700" xmlns="http://www.w3.org/2000/svg">
2 <circle cx="70" cy="70" r="50" />
3 <circle cx="200" cy="70" r="50" fill="#79C99E" />
4 <circle cx="330" cy="70" r="50" fill="#79C99E" stroke="#508484" stroke-width="10" />
5 <circle cx="460" cy="70" r="50" fill="#79C99E" stroke-width="10" />
6 <circle cx="590" cy="70" r="50" fill="none" stroke="#508484" stroke-width="10" />
7</svg>В этом примере:
fill;fill с видимым stroke;stroke-width, но не задает цвет stroke, поэтому контур остается невидимым;
line и polyline в SVGВ отличие от замкнутых фигур, линии и polyline-элементы в SVG определяются прежде всего контуром. Поэтому они хорошо показывают, как свойство stroke управляет цветом, толщиной и видимостью линии.
В примере ниже сравниваются элементы <line> и <polyline>, чтобы показать, как работают цвет обводки, толщина обводки и заливка в разных сценариях.
1<svg height="400" width="700" xmlns="http://www.w3.org/2000/svg">
2 <line x1="30" y1="30" x2="30" y2="300" style="stroke:#4387be; stroke-width:10" />
3 <line x1="55" y1="27" x2="130" y2="300" style="stroke:#c4456d; stroke-width:10" />
4 <line x1="80" y1="20" x2="250" y2="300" style="stroke:#77bec1; stroke-width:10" />
5 <polyline points="300,100 360,50 420,100 480,50 540,100 600,50 660,100" style="fill:none; stroke:#fb6796; stroke-width:5" />
6 <polyline points="300,200 360,150 420,200 480,150 540,200 600,150 660,200" style="fill:#c9d7e1; stroke:#fb6796; stroke-width:5" />
7 <polyline points="300,300 360,250 420,300 480,250 540,300 600,250 660,300" style="stroke:#fb6796; stroke-width:5" />
8</svg>В этом примере:
<line> используют разные цвета обводки и полностью зависят от stroke, потому что линии не имеют заливки;fill="none", поэтому виден только контур;
polyline и polygon в SVGНа первый взгляд polyline и polygon похожи, но при окрашивании они ведут себя по-разному. Главное отличие в том, что polyline – открытая фигура, а polygon всегда замкнут.
В примере ниже используются одни и те же значения fill и stroke, чтобы наглядно показать, как SVG работает с цветом открытых и замкнутых фигур.
1<svg height="400" width="500" xmlns="http://www.w3.org/2000/svg">
2 <polyline points="60,290 130,20 200,290" style="fill:#86a9b9; stroke-width:5; stroke:#fb6796" />
3 <polygon points="260,290 330,20 400,290" style="fill:#86a9b9; stroke-width:5; stroke:#fb6796" />
4</svg>Обе фигуры используют одинаковые значения заливки и обводки, поэтому различие в их поведении хорошо видно:

Path-элементы – самые гибкие элементы SVG: они могут описывать и открытые линии, и замкнутые фигуры. Поэтому их цветовое поведение зависит от того, образует ли path замкнутую область или остается открытым.
В примере ниже одни и те же path data используются дважды, чтобы показать, как свойство fill влияет на path, когда оно явно отключено и когда оно задано.
1<svg height="400" width="600" xmlns="http://www.w3.org/2000/svg">
2 <!-- Unfilled path -->
3 <path d="M150,50 L150,300 M120,100 L150,50 L180,100
4 M110,150 L150,90 L190,150 M90,220 L150,130 L210,220
5 M70,300 L150,190 L230,300 M110,310 L150,240 L190,310"
6 stroke="#a06e84" stroke-width="3" fill="none" />
7 <!-- Filled path -->
8 <path d="M150,50 L150,300 M120,100 L150,50 L180,100
9 M110,150 L150,90 L190,150 M90,220 L150,130 L210,220
10 M70,300 L150,190 L230,300 M110,310 L150,240 L190,310"
11 stroke="#a06e84" stroke-width="3" fill="#74aeaf" transform="translate(200)" />
12</svg>На рисунке ниже показано, как отображаются значения fill="none" и fill="#74aeaf":

Как и другие SVG-фигуры, текст может иметь и stroke, и fill. В этом примере показано, как задать цвет заливки и обводки текста, а также использовать градиент как заливку. Как и у других SVG-фигур, если атрибут fill не задан, текст по умолчанию отображается черным:
1<svg height="300" width="600" xmlns="http://www.w3.org/2000/svg">
2 <defs>
3 <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
4 <stop offset="10%" style="stop-color:lightsalmon" />
5 <stop offset="50%" style="stop-color:teal" />
6 <stop offset="90%" style="stop-color:lightpink" />
7 </linearGradient>
8 </defs>
9 <text x="50" y="50" font-family="arial" font-size="40" >How to add SVG text color?</text>
10 <text x="50" y="130" font-family="arial" font-size="40" fill="lightpink" stroke="teal" stroke-width="1" >How to add SVG text color?</text>
11 <text x="50" y="210" font-family="arial" font-size="40" fill="none" stroke="teal" stroke-width="1" >How to add SVG text color?</text>
12 <text x="50" y="290" font-family="arial" font-size="40" fill="url(#grad1)" stroke="teal" stroke-width="1" >How to add SVG text color?</text>
13</svg>На рисунке показаны разные варианты применения fill и stroke к SVG-тексту:

Подробнее о стилизации текста читайте в статьях Заливка и обводка в SVG и SVG-градиенты.
Opacity определяет, насколько прозрачным выглядит SVG-элемент и как он визуально смешивается с элементами под ним. В SVG прозрачность можно задавать прямо в цветовом значении или через специальные свойства прозрачности. Пример ниже сравнивает три распространенных подхода и показывает, как каждый из них влияет на итоговое отображение.
1<svg height="200" width="1250" xmlns="http://www.w3.org/2000/svg">
2 <!-- RGBA opacity -->
3 <rect x="310" y="30" width="100" height="100" fill="rgba(0,50,255,0.8)" />
4 <rect x="250" y="50" width="110" height="100" fill="rgba(0,50,255,0.7)" />
5 <rect x="170" y="90" width="110" height="100" fill="rgba(0,50,255,0.6)" />
6 <rect x="100" y="50" width="110" height="100" fill="rgba(0,50,255,0.4)" />
7 <rect x="50" y="30" width="110" height="100" fill="rgba(0,50,255,0.2)" />
8
9 <!-- HSLA opacity -->
10 <rect x="710" y="30" width="100" height="100" fill="hsla(0,100%,50%,0.8)" />
11 <rect x="650" y="50" width="110" height="100" fill="hsla(0,100%,50%,0.7)" />
12 <rect x="570" y="90" width="110" height="100" fill="hsla(0,100%,50%,0.6)" />
13 <rect x="500" y="50" width="110" height="100" fill="hsla(0,100%,50%,0.4)" />
14 <rect x="450" y="30" width="110" height="100" fill="hsla(0,100%,50%,0.2)" />
15
16 <!-- HEX + fill-opacity -->
17 <rect x="1110" y="30" width="100" height="100" fill="#C1B900" fill-opacity="0.8" />
18 <rect x="1050" y="50" width="110" height="100" fill="#C1B900" fill-opacity="0.7" />
19 <rect x="970" y="90" width="110" height="100" fill="#C1B900" fill-opacity="0.6" />
20 <rect x="900" y="50" width="110" height="100" fill="#C1B900" fill-opacity="0.4" />
21 <rect x="850" y="30" width="110" height="100" fill="#C1B900" fill-opacity="0.2" />
22</svg>В этом примере:
fill-opacity, поэтому цвет и прозрачность задаются независимо;
Ниже перечислены частые причины неожиданного поведения цвета в SVG.
| Проблема | Причина | Исправление |
|---|---|---|
| Обводка не видна | Задан stroke-width, но не указан цвет stroke | Добавьте значение stroke, например stroke="#d80539" stroke-width="4" |
| Фигура выглядит черной, а не прозрачной | fill пропущен, и SVG использует черную заливку по умолчанию | Используйте fill="none", если нужен только контур |
| Цветовое значение игнорируется | Строка цвета записана с ошибкой или не поддерживается | Используйте корректный именованный цвет, 3- или 6-значный HEX, RGB/RGBA или HSL/HSLA |
| Прозрачность не работает | HEX-цвет не содержит прозрачности | Используйте RGBA, HSLA, fill-opacity или stroke-opacity |
| CSS-цвет не применяется | Inline style или более специфичное CSS-правило переопределяет его | Проверьте computed styles и удалите или обновите конкурирующий style, fill, stroke или CSS-правило |
Совет: Если цвета отображаются не так, как ожидалось, откройте SVG в инструментах разработчика браузера. Отсутствующий namespace (xmlns) или небольшая синтаксическая ошибка часто мешают корректной отрисовке цвета.
| Цель | Фрагмент кода |
|---|---|
| Раскрасить фигуру | <circle cx="50" cy="50" r="40" fill="#E74C3C" /> |
| Сделать фигуру полупрозрачной | <rect width="100" height="100" fill="rgba(0,155,0,0.5)" /> |
| Использовать fill и stroke вместе | <polygon points="30,90 90,90 60,20" fill="#3498DB" stroke="#1B4F72" stroke-width="4" /> |
| Оставить только stroke | <line x1="0" y1="0" x2="100" y2="0" stroke="#ff6600" stroke-width="2" /> |
Используйте HEX для компактной статической графики, RGB/RGBA – когда значения приходят из кода или нужна альфа-прозрачность, а HSL/HSLA – когда нужно управлять тоном, насыщенностью или светлотой. Именованные цвета удобны для простых примеров, но в рабочих SVG-файлах обычно понятнее HEX или RGB.
Используйте цветовые значения rgba() или hsla() либо оставьте цвет отдельно и добавьте fill-opacity или stroke-opacity. Используйте opacity только тогда, когда прозрачным должен стать весь элемент целиком.
Да. Цвета SVG можно задавать через inline styles, блоки стилей или внешний CSS с помощью fill, stroke и связанных свойств. Inline style и presentation attributes могут переопределять более общие CSS-правила.
Если fill не задан, SVG по умолчанию заполняет замкнутые фигуры черным цветом. Добавьте fill="none" для фигуры только с контуром или задайте конкретный цвет заливки.
Да. SVG принимает именованные цвета, HEX-значения, RGB/RGBA, HSL/HSLA и paint-ссылки, например url(#gradient-id). Если цвет должен быть прозрачным, используйте RGBA, HSLA или атрибуты прозрачности.
Элемент <line> не имеет внутренней области, поэтому fill не делает его видимым. Для SVG-линий, polyline, контуров и открытых path-элементов используйте stroke.
Да. Используйте fill="url(#gradient-id)" или stroke="url(#gradient-id)", чтобы применить градиент, определенный в разделе <defs> SVG-документа.
Используйте рабочий процесс через SVG DOM: загрузите файл, выберите целевой элемент, обновите fill, stroke, style или значения gradient stop, затем сохраните документ. Для целевых C#-примеров смотрите
Как изменить цвет SVG, а для случаев, когда цвет управляется inline styles, CSS-правилами или нормализацией стилей, смотрите
Modify SVG Styles Programmatically in C#. Для Python via .NET используйте статью
Изменение цветов SVG в Python.
red, green или DarkCyan.stroke-width, line caps, line joins, dash patterns и paint attributes.stroke и fill.fill, stroke, inline styles и gradient stops.Используйте бесплатный онлайн-сервис Color Mixer, когда нужно смешать два цвета и визуально оценить результат.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.