English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La gradiente SVG se puede definir como una transición suave de un color a otro. En SVG, hay dos tipos de gradientes, a saber: la gradiente lineal y la gradiente radial
La gradiente SVG es un método para rellenar formas con colores de manera no uniforme. De esta manera, el relleno o el trazo de una forma puede cambiar de un color a otro. Para ciertos tipos de gráficos, esto realmente se ve bien.
Este es el aspecto de aplicar una gradiente de relleno y trazo a la forma:
El primer rectángulo siempre tiene el mismo color de trazo, pero con un relleno de gradiente de verde claro a verde oscuro.
El segundo rectángulo ha aplicado una gradiente tanto en el trazo como en el color de relleno.
El tercer rectángulo tiene una gradiente aplicada al trazo, pero sin relleno.
El cuarto rectángulo ha aplicado una gradiente de relleno, pero sin trazo.
}
A continuación, se presentarán estos dos aspectos.
Gradiente radial
Hay dos tipos de gradientes:
gradiente lineal
El gradiente lineal cambia de un color a otro de manera uniforme en línea recta. Al principio de este artículo, ya ha visto algunos ejemplos simples de gradiente lineal.
Los colores pueden cambiar verticalmente, horizontalmente o a lo largo de un vector definido por usted. También puede usar el gradiente para rellenar solo una parte de la forma, en lugar de toda la forma. Antes de continuar, aquí hay algunos ejemplos visuales:
El primer rectángulo utiliza un gradiente vertical. El segundo rectángulo utiliza un gradiente horizontal. El tercer rectángulo utiliza un gradiente diagonal (oscureciendo hacia la esquina inferior derecha). El cuarto rectángulo solo rellena la mitad derecha del rectángulo con el gradiente. Con el gradiente lineal de SVG, todo esto es posible.<linearGradient>
definido por el elemento. Aquí hay un ejemplo:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <linearGradient id="myLinearGradient1" ry=" x1="0%" y1="0%" x2="0%" y2="100%" spreadMethod="pad"> <stop offset="0%" stop-color="#00cc00" stop-opacity="1" ry="/> <stop offset="100%" stop-color="#006600" stop-opacity="1" ry="/> linearGradient>/> linearGradient>/< defs>10<rect x="10" y="75" width="10" height="100" rx="10" ry=" "1style="fill:url(#myLinearGradient );5stroke: #00 000;-stroke 3width: /;"/><svg>/Prueba vea‹
el gradiente lineal se crea usando<linearGradient>
-como puede ver,<defs>
-elemento anidado en<defs>
-elemento dentro. La definición del gradiente debe estar siempre anidada dentro del1)))en <rect>
suestilo
propiedad dentro de-elemento de referencia.
este<linearGradient>
-elemento tiene dos niveles<stop>
-elements。de<linearGradient>
-elemento controla qué antes y después de que se aplica el gradiente (la dirección del desarrollo yspreadMethod
propiedad)。La<stop>
-elements controlan los colores utilizados en el gradiente, la distancia de la forma a los puntos de parada del color, además de la opacidad del gradiente.
Esto es<linearGradient>
-lista de atributos del elemento:
属性 | Descripción |
ID | El ID único utilizado para referirse a esta definición de gradiente desde la forma. |
x1,y1 | vector x1y1(punto de partida)define la dirección del gradiente. Se especifica como el valor x de la forma en la que se aplica el gradiente.1,y1和x2,y2por ciento (%)。(Nota: Puede usar números absolutos, pero parece que no funciona en los navegadores). |
x2,y2 | vector x2y2(punto final)define la dirección del gradiente. |
spreadMethod | 此值定义渐变如何在形状中扩展。共有3种可能的值:填充,重复和反射。“ pad”表示渐变的第一个/最后一个颜色在渐变之前和之后进行填充(展开)。“重复”是指在整个形状中重复渐变。“反射”是指渐变在形状上反映出来。仅当渐变不能完全填充形状时才使用散布方法(请参见元素的offset
属性<stop> )。 |
gradientTransform | Puede transformarlos antes de aplicar el gradiente (por ejemplo, girar). Para más detalles, consulte SVG转换。 |
gradientUnits | 设置是否要使用视图框('userSpaceOnUse')或要应用渐变的形状来计算x1,y1和x2,y2。 |
xlink:href | 另一个渐变的ID,此渐变应从该ID“继承”其属性。换句话说,对于任何属性,如果在此渐变中未设置任何属性值,则参考渐变的属性值将是该渐变的默认值。 |
Esto es<stop>
lista de atributos del elemento:
属性 | Descripción |
offset | Este color comienza (si es el primer color del gradiente) o termina (si es el último color del gradiente) a una distancia determinada de la forma. Se especifica como el porcentaje de la forma en la que se aplica el gradiente (es decir, el vector del gradiente). Por ejemplo,10% indica que el color debe comenzar/parada10del porcentaje de la forma. |
stop-color | El color en este punto de parada. Los colores del gradiente van desde/a. |
La opacidad del color en este punto de parada. Si la opacidad cambia de1Si un punto de parada de un gradiente cambia de uno con 0 a otro con 0, el color se volverá cada vez más transparente. |
Es difícil recordar todas estas descripciones de atributos. Esto creó una imagen para explicar el significado de estos atributos:
Esta es la definición de gradiente lineal que coincide con la imagen:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <linearGradient id="myLinearGradient1" ry=" x1="0%" y1="0%" x2="100%" y2="0%" spreadMethod="pad"> <stop offset="10%" stop-color="#00cc00" stop-opacity="1" ry="/> <stop offset="30%" stop-color="#006600" stop-opacity="1" ry="/> <stop offset="70%" stop-color="#cc0000" stop-opacity="1" ry="/> <stop offset="90%" stop-color="#000099" stop-opacity="1" ry="/> linearGradient>/> linearGradient>/< defs>10<rect x="10" y="500" height="5" height="100" rx="10" ry=" "1); stroke: #005stroke: #00 000;-stroke 3width: /> linearGradient>/><svg>/Prueba vea‹
El primer color de parada es #00cc00, se comenzará desde10% comienza a entrar en el rectángulo. Debido aspreadMethod
se establece como "rejilla", el primer color también se rellena en el rectánguloantesEl primer color de parada (0-10%).
desde el primer color final10% el color se convierte en el segundo color final #006600, hasta la esquina30%.
desde el segundo color final30% se convierte en el tercer color final #cc0000 (rojo), hasta la esquina70%.
desde el tercer color final70% se convierte en el cuarto y último color final #000099(azul), hasta90% desde90% hasta el resto del rectángulo, el último color final (#000099)se rellena en el rectángulo, porquespreadMethod
El<linearGradient>
El atributo del elemento se establece en "pad".
El gradiente radial es el que cambia de color de manera circular en lugar de lineal. Aquí hay un ejemplo de imagen:
Como puedes ver, los colores ahora cambian de manera circular. Los tres últimos (verdes) rectángulos solo cambian en el centro de radiación del color más claro. El primer rectángulo verde tiene colores que se extienden desde el centro del rectángulo. El segundo rectángulo utiliza el centro superior de la forma. El tercer rectángulo se centra en la esquina superior izquierda.
El gradiente radial es el que utiliza<radialGradient>
definido por el elemento. Aquí hay un ejemplo:
<svg width="512" width="120"> <defs> <radialgradient id="myRadialGradient4" fx="5%" fy="5%" r="65%" spreadmethod="pad"><stop offset="0%" stop-color="#00ee00" stop-opacity="1></stop> <stop offset="100%" stop-color="#006600" stop-opacity="1></stop>/radialgradient>/< defs>340" y="10" y="100" height="10" height="100" rx="10" style="fill:url(#myRadialGradient4); stroke: #005000; stroke-stroke 3;<//rect> linearGradient>/><svg>/Prueba vea‹
Este código SVG realmente define el cuarto rectángulo mostrado en el ejemplo anterior. Observa cómo<stop>
Se utiliza un elemento para definir colores como en el gradiente lineal (para más detalles, consulte el gradiente lineal).
Esto es<radialGradient>
Lista de atributos del elemento:
属性 | Descripción |
ID | El ID único utilizado para referirse a esta definición de gradiente desde la forma. |
cy, cy | El centro radial del gradiente de radio x e y. Se especifica como por ciento de la anchura y altura de la forma que se va a rellenar. Si se omite, se establece por defecto en50%. |
fx, fy | El punto de enfoque radial del gradiente de radio x e y. Se especifica como por ciento de la anchura y altura de la forma que se va a rellenar. Si se omite, se establece por defecto en50%. Atención: Firefox 3.0.5El valor parece estar por debajo de5%. |
[R | Radio decreciente. |
spreadMethod | 此值定义渐变如何在形状中扩展。共有3种可能的值:填充,重复和反射。“ pad”表示渐变的第一个/最后一个颜色在渐变之前和之后进行填充(展开)。“重复”是指在整个形状中重复渐变。“反射”是指渐变在形状上反映出来。仅当渐变不能完全填充形状时才使用散布方法(请参见元素的offset
属性<stop> )。 |
gradientTransform | 您可以在应用渐变之前对其进行变换(例如旋转)。有关常规转换的更多详细信息,请参见SVG转换。 |
gradientUnits | 设置是否要使用视图框('userSpaceOnUse')或要应用渐变的形状来计算x1,y1和x2,y2。您通常可以忽略此属性。 |
xlink:href | 另一个渐变的ID,此渐变应从该ID“继承”其属性。换句话说,对于任何属性,如果在此渐变中未设置任何属性值,则参考渐变的属性值将是该渐变的默认值。 |
径向渐变的中心是圆形颜色扩散的中心。如果将径向渐变描述为一个圆,则cx和cy标记该圆的中心。
径向渐变的焦点是彩色辐射的“角度”。如果您将径向渐变视为一盏灯,则焦点将决定来自灯的光线与形状碰撞的角度。50%,50%表示直接从上方。5%,5%表示从左上角向下。渐变看起来有点像光源照到您的形状。
在正确设置渐变之前,您很可能必须先尝试渐变的中心和焦点。我知道我这样做是为了创建这些简单的示例。
您可以使用标准SVG转换功能来转换渐变。这样做使用gradientTransform
属性,无论是在<linearGradient>
y <radialGradient>
。这只是一个示例:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <linearGradient id="myLinearGradient1" ry=" x1="0%" y1="0%" x2="0%" y2="100%" spreadMethod="pad"gradientTransform="rotate(45)" > <stop offset="0%" stop-color="#00cc00" stop-opacity="1" ry="/> <stop offset="100%" stop-color="#006600" stop-opacity="1" ry="/> linearGradient>/> linearGradient>/< defs>10<rect x="10" y="75" width="10" height="100" rx="10" ry=" "1style="fill:url(#myLinearGradient );5stroke: #00 000;-stroke 3width: /;"/><svg>/Prueba vea‹
›Este ejemplo define un gradiente con
gradientTransform()45El gradiente lineal de propiedad, que gira el gradiente
Efecto de imagen después de ejecutar: