spreadMethod
The spreadMethod
attribute determines how a shape is filled beyond the defined edges of a gradient.
You can use this attribute with the following SVG elements:
Usage notes
Value | pad | reflect | repeat |
---|---|
Initial value | pad |
Animatable | Yes |
Defining a gradient's edges
By default, a gradient reaches to the edges of the shape being filled. To see the effects of this attribute, you will need to set the size of the gradient smaller than the shape.
In the case of a linear gradient, the edges may be defined as a rectangle by the x1
, x2
, y1
and y2
attributes. In the case of a radial gradient, the edges may be defined as outer and inner circles by the cx
, cy
and r
(outer) and fx
, fy
and fr
(inner) attributes.
Examples of spreadMethod with linear gradients
SVG
<svg width="220" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="PadGradient" x1="33%" x2="67%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</linearGradient>
<linearGradient
id="ReflectGradient"
spreadMethod="reflect"
x1="33%"
x2="67%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</linearGradient>
<linearGradient id="RepeatGradient" spreadMethod="repeat" x1="33%" x2="67%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</linearGradient>
</defs>
<rect fill="url(#PadGradient)" x="10" y="0" width="200" height="40" />
<rect fill="url(#ReflectGradient)" x="10" y="50" width="200" height="40" />
<rect fill="url(#RepeatGradient)" x="10" y="100" width="200" height="40" />
</svg>
Result
Notice that the middle third of each gradient is the same. The outer thirds show the difference between the three spread methods.
Examples of spreadMethod with radial gradients
SVG
<svg width="340" height="120" xmlns="http://www.w3.org/2000/svg">
<defs>
<radialGradient
id="RadialPadGradient"
cx="75%"
cy="25%"
r="33%"
fx="64%"
fy="18%"
fr="17%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</radialGradient>
<radialGradient
id="RadialReflectGradient"
spreadMethod="reflect"
cx="75%"
cy="25%"
r="33%"
fx="64%"
fy="18%"
fr="17%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</radialGradient>
<radialGradient
id="RadialRepeatGradient"
spreadMethod="repeat"
cx="75%"
cy="25%"
r="33%"
fx="64%"
fy="18%"
fr="17%">
<stop offset="0%" stop-color="fuchsia" />
<stop offset="100%" stop-color="orange" />
</radialGradient>
</defs>
<rect fill="url(#RadialPadGradient)" x="10" y="10" width="100" height="100" />
<rect
fill="url(#RadialReflectGradient)"
x="120"
y="10"
width="100"
height="100" />
<rect
fill="url(#RadialRepeatGradient)"
x="230"
y="10"
width="100"
height="100" />
</svg>
Result
Specifications
Specification |
---|
Scalable Vector Graphics (SVG) 2 # LinearGradientElementSpreadMethodAttribute |
Scalable Vector Graphics (SVG) 2 # RadialGradientElementSpreadMethodAttribute |
Browser compatibility
svg.elements.linearGradient.spreadMethod
BCD tables only load in the browser
svg.elements.radialGradient.spreadMethod
BCD tables only load in the browser