SVG 径向渐变

本文介绍了SVG中的径向渐变,通过 元素创建,并展示了如何定义颜色和调整渐变效果。示例包括圆形和椭圆形状的径向渐变,详细解释了 和 的属性设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一节我们讲的是线性渐变,本节我们来学习径向渐变。径向渐变可以理解为以某一点为圆心,颜色值沿半径方向进行渐变。

如何创建径向渐变

我们可以通过 <radialGradient> 元素创建一个 SVG 的径向渐变。径向渐变的使用其实和线性渐变差不多,也是嵌套在 <defs> 元素中使用,在使用时需要定义一个唯一的 id 名称,然后通过 fill 属性引用。

示例:

定义一个径向渐变的圆:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>SVG学习(9xkd.com)</title>
        <link rel="styleSheet" type="text/css" href="./style.css">
    </head>
    <body>
        <svg width="500" height="300">
            <defs>
                <radialGradient id="radia" cx="50%" cy="50%" r="40%" fx="50%" fy="50%">
                    <stop offset="0%"  style="stop-color:rgb(110, 244, 248); "/>
                    <stop offset="70%"  style="stop-color:rgb(212, 129, 194); "/>
                    <stop offset="100%"  style="stop-color:rgb(243, 204, 132); "/>
                </radialGradient>
            </defs>
            <circle fill="url(#radia)" cx="200" cy="120" r="100" />
        </svg>
    </body>
</html>    

在浏览器中的演示效果:

上述代码中在 <radialGradient> 元素中定义了一个id 属性,方便后面的引用。<radialGradient> 内通过 <stop> 元素定义了三个颜色,<stop> 元素中的三个属性在上一节中讲到过。

除此之外, <radialGradient> 元素中的参数和 <linearGradient> 元素中的属性还是有一些不同,如下所示:

属性描述
r圆的半径
cx渐变的中心点 x 坐标,要移动渐变的位置,可以改变这个值
cy渐变的中心点 y 坐标,要移动渐变的位置,可以改变这个值
fx渐变的焦点 x 坐标,可以用于移动渐变第一个颜色结点的位置
fy渐变的焦点 y 坐标,可以用于移动渐变第一个颜色结点的位置
fr定义径向渐变的焦点的半径,默认值为 0%
示例:

例如创建一个椭圆渐变:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>SVG学习(9xkd.com)</title>
        <link rel="styleSheet" type="text/css" href="./style.css">
    </head>
    <body>
        <svg width="500" height="300">
            <defs>
                <radialGradient id="radia" cx="40%" cy="50%" r="50%" fx="40%" fy="50%" >
                    <stop offset="0%"  style="stop-color:rgb(206, 88, 108); "/>
                    <stop offset="50%"  style="stop-color:rgb(80, 181, 206); "/>
                    <stop offset="70%"  style="stop-color:rgb(233, 199, 125); "/>
                    <stop offset="90%"  style="stop-color:rgb(189, 138, 236); "/>
                    <stop offset="100%"  style="stop-color:rgb(152, 252, 190); "/>
                </radialGradient>
            </defs>
            <ellipse fill="url(#radia)" cx="250" cy="100" rx="150" ry="100"></ellipse>
        </svg>
    </body>
</html>

在浏览器中的演示效果:

这个椭圆渐变中定义了五个颜色,然后通过 cxcy 确定渐变中心点位置,fxfy 确定渐变第一个颜色的结点的位置。

链接:https://www.9xkd.com/

### 如何使用 SVG 创建径向渐变色带 在 SVG 中,可以通过 `<radialGradient>` 元素来定义径向渐变效果。该元素通常嵌套在 `<defs>` 部分中,并通过 `id` 属性进行唯一标识以便后续引用。以下是创建径向渐变的具体方法: #### 定义径向渐变 径向渐变的核心在于设置其圆心位置以及颜色过渡区域。属性如 `cx`, `cy`, 和 `r` 可以用来控制渐变的形状和范围。 - **`cx`**: 设置径向渐变中心点的横坐标,默认值为 0.5 表示相对于对象宽度的一半[^1]。 - **`cy`**: 设置径向渐变中心点的纵坐标,默认值同样为 0.5。 - **`fx`**, **`fy`**: 进一步微调焦点的位置(可选),默认等于 `cx` 和 `cy` 的值。 - **`gradientUnits`**: 控制渐变单位的空间模式,可以取值为 `"objectBoundingBox"` 或 `"userSpaceOnUse"`。 #### 使用颜色停止点 为了完成渐变的效果,还需要定义一系列的颜色停止点 (`<stop>`) 来描述从一种颜色到另一种颜色的变化过程。这些节点由偏移量 (offset) 和对应的颜色组成。 下面是一个完整的例子展示如何利用上述概念构建一个简单的径向渐变图形: ```xml <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg"> <!-- Define the radial gradient --> <defs> <radialGradient id="myRadialGradient" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" gradientUnits="objectBoundingBox"> <stop offset="0%" stop-color="#ffeda0"/> <stop offset="50%" stop-color="#f03b20"/> <stop offset="100%" stop-color="#bd0026"/> </radialGradient> </defs> <!-- Apply the defined gradient to a shape --> <circle cx="100" cy="100" r="90" fill="url(#myRadialGradient)" /> </svg> ``` 此代码片段展示了如何在一个圆形上应用自定义的三色调径向渐变。其中每种颜色都按照特定百分比分布在整个圆周范围内。 #### 注意事项 当调整 `gradientUnits` 值时需注意不同选项的影响。“Object Bounding Box”意味着所有的数值都是基于目标物体边界框的比例计算;而 “User Space On Use” 则采用绝对像素测量方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值