Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
El color SVG controla cómo se pintan formas, paths, líneas y texto. Puedes definir colores con fill, stroke, atributos de opacidad, estilos CSS, nombres de color, HEX, RGB, HSL, gradientes y patrones. Este tutorial explica las reglas básicas del color SVG y muestra cómo se comportan los mismos valores de color en elementos SVG comunes.
Respuesta rápida: En SVG, usa fill para el interior de formas, paths y texto, stroke para contornos y líneas, y opacity, fill-opacity o stroke-opacity para transparencia. Los valores de color pueden ser nombres de color, HEX, RGB/RGBA, HSL/HSLA o referencias url(#id) a gradientes y patrones.
1<circle cx="50" cy="50" r="40" fill="#3498db" stroke="#1f4f72" stroke-width="4" />En este artículo aprenderás a: definir colores SVG con fill y stroke, elegir formatos de código de color, colorear formas, paths y texto, y evitar errores comunes de color en SVG.
En SVG, colorear un elemento se llama pintar. La pintura determina cómo se renderiza un elemento aplicando un relleno, un trazo o ambos. Estas propiedades controlan el interior y el contorno de formas, paths y texto.
SVG admite dos formas comunes de definir colores:
fill="red" o stroke="#00ff00", escritos directamente en el elemento.style, por ejemplo style="fill:#ff0000; stroke:green; stroke-width:2", que sigue la sintaxis CSS estándar.Ambos enfoques participan en la cascada CSS y en las reglas de herencia, pero no tienen la misma prioridad. Un atributo de presentación como fill="red" es fácil de leer y editar, mientras que una declaración style en línea normalmente sobrescribe la misma propiedad escrita como atributo de presentación. Para una guía más profunda de C# y estilos SVG, consulta
SVG CSS vs Inline Styles vs Presentation Attributes.
SVG usa dos propiedades principales para aplicar color:
| Propiedad | Qué afecta | Comportamiento predeterminado |
|---|---|---|
fill | Área interior de una forma o path cerrado | Predeterminado black |
stroke | Contorno de una forma, línea o texto | No se renderiza de forma predeterminada |
Una forma puede usar cualquiera de estas propiedades de forma independiente o combinar ambas. Por ejemplo, un círculo puede tener un relleno coloreado y un trazo visible, mientras que un elemento de línea (<line>) solo puede pintarse mediante stroke. Las formas cerradas como <circle>, <rect> y <polygon> admiten tanto fill como stroke.
SVG aplica varias reglas importantes al interpretar valores de color:
fill, la forma se rellena de negro de forma predeterminada.fill="none" o fill="transparent" hace que el interior sea completamente transparente.stroke, no se dibuja contorno, aunque se defina stroke-width.fill como stroke aceptan varios formatos de color, incluidos nombres de color, HEX, RGB/RGBA y HSL/HSLA.fill o stroke. Los ejemplos siguientes incluyen un relleno con gradiente en texto, y los recursos relacionados enlazan al tutorial específico de gradientes.Resumen rápido
Puedes expresar un color de varias formas. El mejor formato depende de si el color debe ser legible, compacto, fácil de generar en código o parcialmente transparente.
| Formato de color | Mejor para | Ejemplo |
|---|---|---|
| Nombre de color | Ejemplos simples y prototipos legibles | fill="green" |
| HEX | Colores compactos y estables en iconos e ilustraciones | fill="#00FF00" |
| RGB | Valores programáticos desde canales rojo, verde y azul | fill="rgb(0,255,0)" |
| RGBA | Color más transparencia en un solo valor | fill="rgba(0,255,0,0.6)" |
| HSL | Ajustes de diseño por tono, saturación y luminosidad | fill="hsl(120,100%,50%)" |
| HSLA | Color HSL más transparencia | fill="hsla(120,100%,50%,0.6)" |
url(#id) | Gradientes y patrones definidos en <defs> | fill="url(#grad1)" |
Los ejemplos siguientes usan el mismo círculo para comparar solo la sintaxis del color. Cada línea define un fill verde y un stroke rojo en un formato distinto.
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)" />Consejo:
fill-opacity y stroke-opacity.<circle>, <path>, <line>, <polygon> o <text>.fill para el color interior de formas cerradas, paths y texto.stroke y stroke-width para contornos y color de línea.url(#id) para gradientes y patrones.fill-opacity, stroke-opacity, RGBA o HSLA cuando se necesite transparencia.fill, será negro; si falta stroke, no se dibuja contorno.Usa el convertidor de color en línea cuando necesites un valor exacto antes de colocarlo en fill, stroke, style o una parada de gradiente SVG. Por ejemplo, puedes convertir un color de marca RGB a HEX para obtener marcado SVG compacto, o convertir HEX a HSL cuando quieras ajustar tono, saturación o luminosidad de forma más predecible. El convertidor no edita el archivo SVG directamente; copia el valor convertido en el atributo SVG o declaración CSS que necesites.
Un círculo es una de las formas SVG más simples y resulta ideal para demostrar color. Al cambiar fill y stroke, puedes controlar el color del interior del círculo, su contorno o ambos.
El ejemplo siguiente muestra varios círculos con distintas configuraciones de color, desde la versión estándar hasta combinaciones totalmente personalizadas de relleno y trazo.
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>En este ejemplo:
fill.fill personalizado con un stroke visible.stroke-width, pero no un color de trazo, por lo que el contorno sigue invisible.
A diferencia de las formas cerradas, las líneas y polilíneas en SVG se definen principalmente por sus contornos. Por eso son especialmente útiles para demostrar cómo la propiedad stroke controla color, grosor y visibilidad.
El ejemplo siguiente compara elementos <line> simples con elementos <polyline> para mostrar cómo se comportan el color de trazo, el grosor del trazo y el relleno en distintos escenarios.
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>En este ejemplo:
<line> usan distintos colores de trazo y dependen completamente de stroke para ser visibles, porque las líneas no tienen relleno.fill="none", asegurando que solo se vea el contorno.
A primera vista, polilíneas y polígonos pueden parecer similares, pero se comportan de forma distinta al colorearse. La diferencia clave es que una polilínea es una forma abierta, mientras que un polígono siempre está cerrado.
El ejemplo siguiente usa los mismos valores de fill y stroke para demostrar claramente cómo SVG maneja el color en formas abiertas y cerradas.
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>Ambas formas usan los mismos valores de relleno y trazo, lo que permite ver fácilmente la diferencia de comportamiento:

Los paths son los elementos más flexibles de SVG y pueden describir formas abiertas o cerradas. Por eso su esquema de color depende de si el path forma un área cerrada o permanece abierto.
En el ejemplo siguiente, los mismos datos de path se usan dos veces para mostrar cómo afecta fill cuando se desactiva explícitamente y cuando se aplica.
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>La figura muestra cómo se visualizan los valores fill="none" y fill="#74aeaf":

Como otras formas SVG, el texto puede tener tanto stroke como fill. En este ejemplo veremos cómo definir color de relleno y color de trazo del texto, y cómo usar un gradiente como relleno. Igual que en todas las formas SVG, si no se especifica fill, el texto se muestra en negro de forma predeterminada:
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>La figura muestra los distintos casos de aplicar relleno y trazo para añadir color al texto:

Puedes leer más sobre cómo estilizar texto en Rellenos y trazos en SVG y Gradientes SVG.
La opacidad determina qué tan transparente aparece un elemento SVG y cómo se mezcla visualmente con los elementos detrás. En SVG, la transparencia puede definirse directamente dentro del valor de color o mediante propiedades específicas de transparencia. El ejemplo siguiente compara tres enfoques comunes para aplicar transparencia y muestra cómo cada método afecta al resultado final.
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>En este ejemplo:
fill-opacity, manteniendo color y opacidad definidos de forma independiente.
Estos son algunos de los problemas más habituales que causan comportamientos inesperados del color en SVG.
| Problema | Causa | Solución |
|---|---|---|
| El trazo no se ve | stroke-width está definido, pero falta el color stroke | Añade un valor stroke, por ejemplo stroke="#d80539" stroke-width="4" |
| La forma aparece negra en lugar de transparente | Se omite fill y SVG usa el relleno negro predeterminado | Usa fill="none" cuando solo deba verse el contorno |
| El valor de color se ignora | La cadena de color está mal formada o no es compatible | Usa un nombre de color válido, HEX de 3 o 6 dígitos, RGB/RGBA o HSL/HSLA |
| La opacidad no tiene efecto | El color HEX no incluye transparencia | Usa RGBA, HSLA, fill-opacity o stroke-opacity |
| El color CSS no se aplica | Un style en línea o una regla CSS más específica lo sobrescribe | Inspecciona los estilos calculados y elimina o actualiza el style, fill, stroke o regla CSS que compite |
Consejo: Si los colores no se renderizan como esperas, abre el SVG en las herramientas de desarrollador del navegador. Namespaces (xmlns) faltantes o pequeños errores de sintaxis suelen impedir que los colores se rendericen correctamente.
| Objetivo | Fragmento de código |
|---|---|
| Colorear una forma | <circle cx="50" cy="50" r="40" fill="#E74C3C" /> |
| Hacer una forma semitransparente | <rect width="100" height="100" fill="rgba(0,155,0,0.5)" /> |
| Combinar fill + stroke | <polygon points="30,90 90,90 60,20" fill="#3498DB" stroke="#1B4F72" stroke-width="4" /> |
| Aplicar solo un trazo | <line x1="0" y1="0" x2="100" y2="0" stroke="#ff6600" stroke-width="2" /> |
Usa HEX para arte estático compacto, RGB/RGBA cuando los valores vengan de código o necesiten transparencia alfa, y HSL/HSLA cuando quieras ajustar tono, saturación o luminosidad. Los nombres de color sirven para ejemplos simples, pero HEX o RGB suelen ser más claros en archivos SVG de producción.
Usa valores rgba() o hsla(), o mantén el color separado y añade fill-opacity o stroke-opacity. Usa opacity solo cuando todo el elemento deba volverse transparente.
Sí. Puedes aplicar colores SVG con estilos en línea, bloques de estilo o CSS externo usando fill, stroke y propiedades relacionadas. El style en línea y los atributos de presentación pueden sobrescribir reglas CSS más generales.
Si fill no se especifica, SVG rellena las formas cerradas con negro de forma predeterminada. Añade fill="none" para una forma solo con contorno o define un color de relleno específico.
Sí. SVG acepta nombres de color, valores HEX, RGB/RGBA, HSL/HSLA y referencias de pintura como url(#gradient-id). Usa RGBA, HSLA o atributos de opacidad cuando el color deba ser transparente.
Un elemento <line> no tiene área interior, así que fill no lo hace visible. Usa stroke para líneas SVG, polilíneas, contornos y paths abiertos.
Sí. Usa fill="url(#gradient-id)" o stroke="url(#gradient-id)" para aplicar un gradiente definido en la sección <defs> del SVG.
Usa un flujo de trabajo con DOM SVG: carga el archivo, selecciona el elemento de destino, actualiza fill, stroke, style o valores de paradas de gradiente, y guarda el documento. Consulta
Cómo cambiar color SVG para ejemplos centrados en color, o
Modificar estilos SVG mediante programación en C# cuando el color esté controlado por estilos en línea, reglas CSS o normalización de estilos. Para Python via .NET, consulta
Cambiar colores SVG en Python.
red, green o DarkCyan.stroke y fill mediante código.fill, stroke, estilos en línea y paradas de gradiente.Usa el Color Mixer gratuito en línea cuando necesites mezclar dos colores y previsualizar el resultado visualmente.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.