Estoy tratando de aplicar un degradado a un rect
elemento SVG .
Actualmente, estoy usando el fill
atributo. En mi archivo CSS:
rect {
cursor: pointer;
shape-rendering: crispEdges;
fill: #a71a2e;
}
Y el rect
elemento tiene el color de relleno correcto cuando se ve en el navegador.
Sin embargo, me gustaría saber si puedo aplicar un degradado lineal a este elemento.
css
svg
gradient
linear-gradients
Hrishikesh Choudhari
fuente
fuente
fill
de esta manera:fill: url(../js/gradient.svg#MyGradient);
. ¿Es este el camino correcto?fill: linear-gradient (...)
?"fill
requiere un<paint>
que se basa en la<color>
clase CSS2 . En otras palabras, esta respuesta es actualmente la única forma de hacerlo a través de CSS en el momento en que escribo este comentario. Necesitas agregar unlinearGradient
elemento. Por último, al revisar el Borrador de trabajo de w3 para SVG2 , parece que el soporte paralinear-gradient
la regla de relleno css no lo ha hecho y podría no estar incluido en la especificación.gradientTransform
atributo)Respuesta 2019
Con las nuevas propiedades CSS, puede tener aún más flexibilidad con las variables, también conocidas como
custom properties
Simplemente configure una variable con nombre para cada uno
stop
en degradado y luego personalícelo como desee en css. Incluso puede cambiar sus valores dinámicamente con javascript, como:fuente
Sobre la base de lo que escribió Finesse, aquí hay una forma más sencilla de apuntar al svg y cambiar su gradiente.
Esto es lo que necesitas hacer:
Algunos de los beneficios de usar clases en lugar de
:nth-child
es que no se verá afectado si reordena sus paradas. Además, deja en claro la intención de cada clase: se quedará preguntándose si necesitaba un color azul en el primer niño o en el segundo.Lo he probado en todos los Chrome, Firefox e IE11:
Vea un ejemplo editable aquí: https://jsbin.com/gabuvisuhe/edit?html,css,output
fuente
Aquí hay una solución en la que puede agregar un degradado y cambiar sus colores usando solo CSS:
fuente
Gracias a todos por todas sus respuestas precisas.
Usando el svg en un dom de sombra, agrego los 3 gradientes lineales que necesito dentro del svg, dentro de a. Coloco la regla de relleno css en el componente web y la herencia de relleno hace el trabajo.
ver mi prueba en codepen
El primero es SVG normal, el segundo está dentro de un dom de sombra.
fuente
A continuación se explica cómo establecer un linearGradient en un elemento de destino:
fuente