stop-color : SVG Gradient Stop Color Property
The stop-color property specifies the color value at a gradient stop within SVG gradient definitions. This property is essential for creating linear and radial gradients by defining the colors at specific positions along the gradient vector.
Usage
selector {
stop-color: value;
}
The stop-color property accepts color values in various formats to define the color at a specific gradient stop.
Supported Values
Named Colors
Standard CSS color names such as red, blue, green, black, orange, etc.
Hexadecimal Colors
- Short form:
#RGB(e.g.,#f00for red) - Long form:
#RRGGBB(e.g.,#ff0000for red)
RGB/RGBA Functions
- RGB:
rgb(red, green, blue)where values are 0-255 - RGBA:
rgba(red, green, blue, alpha)where alpha is 0.0-1.0
HSL/HSLA Functions
- HSL:
hsl(hue, saturation%, lightness%) - HSLA:
hsla(hue, saturation%, lightness%, alpha)
Special Keywords
currentColor- Uses the current color value of the element
Supported Elements
The stop-color property applies to:
<stop>elements within<linearGradient>definitions<stop>elements within<radialGradient>definitions
Note: This property only works on <stop> elements, not on shape elements directly.
Notes
- Must be used within
<stop>elements inside gradient definitions - Each
<stop>element defines a color at a specific offset (0% to 100%) - Multiple stops create color transitions in gradients
- The
offsetattribute determines where the color appears in the gradient - Gradients interpolate colors between stops
- Use with
stop-opacityfor transparent gradient stops - Default stop-color is typically black if not specified
- Gradients are reusable and can be referenced by multiple elements
- Essential for creating smooth color transitions in backgrounds, fills, and shapes
- Vector gradients maintain quality at any zoom level in PDF viewers
- Can create complex multi-color gradients with multiple stops
Data Binding
The stop-color property can be dynamically controlled through data binding, enabling data-driven gradient colors that respond to values, states, or categories. This is essential for creating dynamic visualizations with color-coded data representations.
Example 1: Data-driven gradient colors for status indicators
<style>
.status-bar { fill: url(#statusGrad); }
</style>
<body>
<svg width="400" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<template data-bind="">
<linearGradient id="statusGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color=""/>
<stop offset="100%" stop-color=""/>
</linearGradient>
</template>
</defs>
<rect class="status-bar" width="400" height="150"/>
</svg>
</body>
Example 2: Dynamic multi-stop gradients from data
<style>
.data-viz { fill: url(#dataGradient); }
</style>
<body>
<svg width="500" height="300" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="dataGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<template data-bind="">
<stop offset="%" stop-color=""/>
</template>
</linearGradient>
</defs>
<rect class="data-viz" width="500" height="300"/>
</svg>
</body>
Example 3: Conditional gradient colors based on thresholds
<style>
.metric-bar { fill: url(#metricGrad); }
</style>
<body>
<svg width="400" height="100" xmlns="http://www.w3.org/2000/svg">
<defs>
<template data-bind="">
<linearGradient id="metricGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#ef4444#f59e0b#10b981"/>
<stop offset="100%" stop-color="#dc2626#d97706#059669"/>
</linearGradient>
</template>
</defs>
<rect class="metric-bar" x="25" y="25" width="350" height="50" rx="25"/>
</svg>
</body>
Examples
Example 1: Simple two-color linear gradient
<style>
.gradient-rect {
fill: url(#blueGradient);
}
</style>
<body>
<svg width="300" height="150">
<defs>
<linearGradient id="blueGradient">
<stop offset="0%" stop-color="#3b82f6"/>
<stop offset="100%" stop-color="#1e40af"/>
</linearGradient>
</defs>
<rect class="gradient-rect" x="25" y="25" width="250" height="100"/>
</svg>
</body>
Example 2: Three-color gradient
<style>
.tricolor {
fill: url(#triGradient);
}
</style>
<body>
<svg width="300" height="150">
<defs>
<linearGradient id="triGradient">
<stop offset="0%" stop-color="#ef4444"/>
<stop offset="50%" stop-color="#fbbf24"/>
<stop offset="100%" stop-color="#10b981"/>
</linearGradient>
</defs>
<rect class="tricolor" x="25" y="25" width="250" height="100"/>
</svg>
</body>
Example 3: Radial gradient from center
<style>
.radial-circle {
fill: url(#radialGrad);
}
</style>
<body>
<svg width="300" height="300">
<defs>
<radialGradient id="radialGrad">
<stop offset="0%" stop-color="#fbbf24"/>
<stop offset="100%" stop-color="#dc2626"/>
</radialGradient>
</defs>
<circle class="radial-circle" cx="150" cy="150" r="120"/>
</svg>
</body>
Example 4: Sunset gradient with multiple stops
<style>
.sunset {
fill: url(#sunsetGradient);
}
</style>
<body>
<svg width="400" height="250">
<defs>
<linearGradient id="sunsetGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#1e3a8a"/>
<stop offset="30%" stop-color="#7c3aed"/>
<stop offset="50%" stop-color="#f97316"/>
<stop offset="70%" stop-color="#fbbf24"/>
<stop offset="100%" stop-color="#fef3c7"/>
</linearGradient>
</defs>
<rect class="sunset" width="400" height="250"/>
</svg>
</body>
Example 5: Button with gradient background
<style>
.gradient-button {
fill: url(#buttonGradient);
}
</style>
<body>
<svg width="250" height="100">
<defs>
<linearGradient id="buttonGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#60a5fa"/>
<stop offset="100%" stop-color="#3b82f6"/>
</linearGradient>
</defs>
<rect class="gradient-button" x="25" y="25" width="200" height="50" rx="25"/>
</svg>
</body>
Example 6: Metal effect gradient
<style>
.metal {
fill: url(#metalGradient);
}
</style>
<body>
<svg width="300" height="150">
<defs>
<linearGradient id="metalGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#d1d5db"/>
<stop offset="25%" stop-color="#f3f4f6"/>
<stop offset="50%" stop-color="#9ca3af"/>
<stop offset="75%" stop-color="#e5e7eb"/>
<stop offset="100%" stop-color="#6b7280"/>
</linearGradient>
</defs>
<rect class="metal" x="50" y="25" width="200" height="100" rx="10"/>
</svg>
</body>
Example 7: Rainbow gradient
<style>
.rainbow {
fill: url(#rainbowGradient);
}
</style>
<body>
<svg width="400" height="100">
<defs>
<linearGradient id="rainbowGradient">
<stop offset="0%" stop-color="#ef4444"/>
<stop offset="17%" stop-color="#f97316"/>
<stop offset="33%" stop-color="#fbbf24"/>
<stop offset="50%" stop-color="#10b981"/>
<stop offset="67%" stop-color="#3b82f6"/>
<stop offset="83%" stop-color="#6366f1"/>
<stop offset="100%" stop-color="#a855f7"/>
</linearGradient>
</defs>
<rect class="rainbow" width="400" height="100"/>
</svg>
</body>
Example 8: Glossy highlight effect
<style>
.glossy {
fill: url(#glossyGradient);
}
</style>
<body>
<svg width="250" height="250">
<defs>
<radialGradient id="glossyGradient" cx="40%" cy="40%">
<stop offset="0%" stop-color="white"/>
<stop offset="50%" stop-color="#3b82f6"/>
<stop offset="100%" stop-color="#1e40af"/>
</radialGradient>
</defs>
<circle class="glossy" cx="125" cy="125" r="100"/>
</svg>
</body>
Example 9: Water effect gradient
<style>
.water {
fill: url(#waterGradient);
}
</style>
<body>
<svg width="400" height="250">
<defs>
<linearGradient id="waterGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#06b6d4"/>
<stop offset="50%" stop-color="#0891b2"/>
<stop offset="100%" stop-color="#164e63"/>
</linearGradient>
</defs>
<rect class="water" width="400" height="250"/>
</svg>
</body>
Example 10: Fire/flame gradient
<style>
.fire {
fill: url(#fireGradient);
}
</style>
<body>
<svg width="300" height="300">
<defs>
<radialGradient id="fireGradient" cx="50%" cy="80%">
<stop offset="0%" stop-color="#fef3c7"/>
<stop offset="20%" stop-color="#fbbf24"/>
<stop offset="50%" stop-color="#f97316"/>
<stop offset="80%" stop-color="#dc2626"/>
<stop offset="100%" stop-color="#7f1d1d"/>
</radialGradient>
</defs>
<circle class="fire" cx="150" cy="150" r="120"/>
</svg>
</body>
Example 11: Pastel gradient background
<style>
.pastel {
fill: url(#pastelGradient);
}
</style>
<body>
<svg width="400" height="300">
<defs>
<linearGradient id="pastelGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#dbeafe"/>
<stop offset="33%" stop-color="#fce7f3"/>
<stop offset="67%" stop-color="#fef3c7"/>
<stop offset="100%" stop-color="#d1fae5"/>
</linearGradient>
</defs>
<rect class="pastel" width="400" height="300"/>
</svg>
</body>
Example 12: Neon glow effect
<style>
.neon {
fill: url(#neonGradient);
}
</style>
<body>
<svg width="300" height="150">
<defs>
<radialGradient id="neonGradient">
<stop offset="0%" stop-color="#a78bfa"/>
<stop offset="50%" stop-color="#8b5cf6"/>
<stop offset="100%" stop-color="#6d28d9"/>
</radialGradient>
</defs>
<rect class="neon" x="50" y="25" width="200" height="100" rx="50"/>
</svg>
</body>
Example 13: Progress bar gradient
<style>
.progress-bg {
fill: #e5e7eb;
}
.progress-fill {
fill: url(#progressGradient);
}
</style>
<body>
<svg width="350" height="80">
<defs>
<linearGradient id="progressGradient">
<stop offset="0%" stop-color="#10b981"/>
<stop offset="100%" stop-color="#059669"/>
</linearGradient>
</defs>
<rect class="progress-bg" x="25" y="25" width="300" height="30" rx="15"/>
<rect class="progress-fill" x="25" y="25" width="210" height="30" rx="15"/>
</svg>
</body>
Example 14: Sky gradient for landscape
<style>
.sky {
fill: url(#skyGradient);
}
.ground {
fill: #10b981;
}
</style>
<body>
<svg width="500" height="400">
<defs>
<linearGradient id="skyGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#0ea5e9"/>
<stop offset="100%" stop-color="#7dd3fc"/>
</linearGradient>
</defs>
<rect class="sky" width="500" height="280"/>
<rect class="ground" y="280" width="500" height="120"/>
</svg>
</body>
Example 15: Badge with gradient fill
<style>
.badge-gradient {
fill: url(#badgeGradient);
}
</style>
<body>
<svg width="400" height="200">
<defs>
<linearGradient id="badgeGradient" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#f59e0b"/>
<stop offset="50%" stop-color="#fbbf24"/>
<stop offset="100%" stop-color="#f59e0b"/>
</linearGradient>
</defs>
<circle class="badge-gradient" cx="200" cy="100" r="80"/>
</svg>
</body>
See Also
- stop-opacity - Gradient stop transparency
- fill - SVG fill color property
- stroke - SVG stroke color property
- opacity - Element transparency
- style attribute - Inline CSS styles