为什么在应用渐变时会切掉一部分圆圈?
<svg width="900" height="200" viewBox="0 0 900 200" style='border: 1px solid black' >
<defs>
<radialGradient id="MyGradient"
fx="25%" fy="25%" r="30%" >
<stop offset="0%" stop-color="white"/>
<stop offset="100%" stop-color="blue"/>
</radialGradient>
</defs>
<circle cx="75" cy="75" r="70"
fill="url(#MyGradient)" />
</svg>
由于MyGradient中设置的参数如果
fx="25%" fy="25%" r="30%"不想被裁剪(元素是圆形的)设置r="100%"一点理论:
换句话说,如果没有指定属性,
gradientUnits它将采用默认值 -gradientUnits="objectBoundingBox"并且渐变属性的所有值都必须以百分比或 1 的分数指定。因此,您可以写r="100%"orr="1",或者根本不指定半径,它将采用默认值r="100%"属性
fx="0.25"fy="0.25"指定径向渐变的起点坐标,即绘制彩色圆圈的位置。默认值fx="50%"fy="50%",对象的中心,同样可以省略。渐变动画
任何属性都可用于为渐变设置动画。
在下面的示例中,属性用于动画
fx,fy结果是模仿了光源的运动
复杂渐变动画示例
适用于所有现代浏览器,包括
Edge这里使用的坐标系是针对梯度的
userSpaceOnUse,所以属性值是以像素为单位的。渐变的反射是通过用渐变切割一个矩形来实现的
并围绕轴翻转 180 度
Х下面是完整的代码:
源代码,稍作修改
回复@Leks 评论
渐变的
fx="0.5" fy="0.5" r="1"起点正好在形状的中心。fx=0.5或者,这是相同的fx=50%- 结果是对称的,等于从边缘(即中心)缩进的一半。例如,向左上角
fx="0" fy="0"的偏移自然会在这样的偏移下,只有一个,下,右四分之一的圆形渐变将在图形上。下面是一个动画示例,演示了渐变在不同
值的元素上的叠加。
fx, fy渐变的起点在
fy="0%"左上角,
fy="50%"- 在中间,
fy="100%"- 渐变的起点在右下角