有两种类型的渐变:线性渐变(linearGradient)和径向渐变(radialGradient)。并非只能简单填充颜色和描边,还可以创建并在填充和描边上应用渐变色。
必须给渐变内容指定一个 id 属性,否则文档内的其他元素就不能引用它。为了让渐变能被重复使用,渐变内容需要定义在标签内部,而不是定义在形状上面。
- 通用属性
- x1/y1/x2/y2 共同决定渐变方向
- gradientUnits
- gradientTransform
- href 定义了对另一个将被用作模板 元素的引用
- 如果渐变在包含渐变的形状的边界内开始或结束,它将如何表现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <svg width="120" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="Gradient1"> <stop class="stop1" offset="0%" /> <stop class="stop2" offset="50%" /> <stop class="stop3" offset="100%" /> </linearGradient> <linearGradient id="Gradient2" x1="0" x2="0" y1="0" y2="1"> <stop offset="0%" stop-color="red" /> <stop offset="50%" stop-color="black" stop-opacity="0" /> <stop offset="100%" stop-color="blue" /> </linearGradient> <style type="text/css"> <![CDATA[ #rect1 { fill: url(#Gradient1); } .stop1 { stop-color: red; } .stop2 { stop-color: black; stop-opacity: 0; } .stop3 { stop-color: blue; } ]]> </style> </defs>
<rect id="rect1" x="10" y="10" rx="15" ry="15" width="100" height="100" /> <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#Gradient2)" /> </svg>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <svg width="120" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="Gradient1"> <stop id="stop1" offset="0%" /> <stop id="stop2" offset="50%" /> <stop id="stop3" offset="100%" /> </linearGradient> <linearGradient id="Gradient2" x1="0" x2="0" y1="0" y2="1" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#Gradient1" /> </defs>
<rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#Gradient2)" /> </svg>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <svg width="120" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <radialGradient id="RadialGradient1"> <stop offset="0%" stop-color="red" /> <stop offset="100%" stop-color="blue" /> </radialGradient> <radialGradient id="RadialGradient2" cx="0.25" cy="0.25" r="0.25"> <stop offset="0%" stop-color="red" /> <stop offset="100%" stop-color="blue" /> </radialGradient> </defs>
<rect x="10" y="10" rx="15" ry="15" width="100" height="100" fill="url(#RadialGradient1)" /> <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#RadialGradient2)" /> </svg>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| <?xml version="1.0" standalone="no"?>
<svg width="220" height="220" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <radialGradient id="GradientPad" cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75" spreadMethod="pad"> <stop offset="0%" stop-color="red" /> <stop offset="100%" stop-color="blue" /> </radialGradient> <radialGradient id="GradientRepeat" cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75" spreadMethod="repeat"> <stop offset="0%" stop-color="red" /> <stop offset="100%" stop-color="blue" /> </radialGradient> <radialGradient id="GradientReflect" cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75" spreadMethod="reflect"> <stop offset="0%" stop-color="red" /> <stop offset="100%" stop-color="blue" /> </radialGradient> </defs>
<rect x="10" y="10" rx="15" ry="15" width="100" height="100" fill="url(#GradientPad)" /> <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#GradientRepeat)" /> <rect x="120" y="120" rx="15" ry="15" width="100" height="100" fill="url(#GradientReflect)" />
<text x="15" y="30" fill="white" font-family="sans-serif" font-size="12pt"> Pad </text> <text x="15" y="140" fill="white" font-family="sans-serif" font-size="12pt"> Repeat </text> <text x="125" y="140" fill="white" font-family="sans-serif" font-size="12pt"> Reflect </text> </svg>
|