Es realmente posible para aquellos que pueden usar pre-procesadores en la producción, por "inline" fondo SVG, y un poco de SASS mixins
, que "cortan" todo el galimatías svg
, para acceder a las partes que desea manipular a través del SASS variables
.
En su escenario original que tienen un elemento
<div class="element1"></div>
,
lo que necesita un mixin/function
que inline SVG para usted.Digamos que usted quiere controlar de la fill
, por lo que:
@mixin inline-svg($color, $svg-content) {
$start: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>path { fill:#{$color}; }</style>';
$end: '</svg>';
background-image: url('data:image/svg+xml;utf8, #{$start}#{$svg-content}#{$end}');
}
donde $svg-content
variable es su <svg>
cosas excluyendo <style>
elemento (la que desea acceder desde el interior de la mixin
) y envolviendo svg
etiqueta ,, es decir: $svg-content = "<path .... />"
Esto sólo tiene que incluirse con valores pasados en el interior:
@include inline-svg(salmon, $svg-content);
en resumen whol e cosa, este es un ejemplo SASS código:
$svg-content = "<path .... />"
@mixin inline-svg($color, $svg-content) {
$start: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>path { fill:#{$color}; }</style>';
$end: '</svg>';
background-image: url('data:image/svg+xml;utf8, #{$start}#{$svg-content}#{$end}');
}
.element1 {
@include inline-svg(rgba(0,0,0,0.6), $svg-content);
}
Creo posibilidades aquí son bastante grandes (también existen limitaciones para que el enfoque). De hecho, me paso un SASS map
a mis mixin
con css
estilos definidos como key
, value
par, para inyectar toda montón de estilos css
a la parte de <style>
svg
.
Por lo tanto, es técnicamente posible, pero requiere más competencia, pero una vez que lo haya hecho, obtendrá los beneficios de reutilizar este mixin
en todos sus proyectos, lo cual es genial.
parece que sí. Gracias. estaría bien, ¿eh? – Jonathon
@joneb No creo que sea perfecto, creo que causaría problemas de referencia circular. :) – Phrogz
sí, tienes razón. el uso de aseado en este caso está relacionado con: "Desearía que funcione para el propósito que tengo ahora, a falta de considerar las implicaciones más amplias": D – Jonathon