In realtà è possibile per coloro che possono utilizzare preprocessori in produzione, da "inlining" background SVG, e bit di SASS mixins
, che "taglia" tutto il testo svg
senza senso, per ottenere l'accesso alle parti che si desidera manipolare tramite SASS variables
.
nello scenario originale voi hanno un elemento
<div class="element1"></div>
,
quindi è necessario un mixin/function
che inline SVG per voi.Diciamo che si desidera controllare il fill
, quindi:
@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}');
}
dove $svg-content
variabile è la tua roba <svg>
escluso <style>
elemento (che si desidera accedere dall'interno del mixin
) e confezionamento svg
tag ,, vale a dire: $svg-content = "<path .... />"
Questo solo bisogno di essere incluso con valori passati all'interno:
@include inline-svg(salmon, $svg-content);
per riassumere da t e cosa in su, questo è un esempio di codice SASS:
$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);
}
Penso possibilità qui sono abbastanza grandi (ci sono anche limitazioni qui per questo approccio). Io in realtà passo un SASS map
ai miei mixin
con css
stili definiti come key
, value
coppia, per iniettare intero gruppo di css
stili al <style>
parte di svg
.
Quindi è tecnicamente possibile, ma richiede più complicità, ma una volta completato, si otterrà il vantaggio di riutilizzare questo mixin
in tutti i progetti, il che è fantastico.
sembra così. Grazie. sarebbe pulito eh? – Jonathon
@joneb Non penso che sarebbe pulito, penso che causerebbe problemi di riferimento circolare. :) – Phrogz
sì, hai ragione. l'uso di pulito in questo caso è correlato a: "Vorrei lavorare per lo scopo che ho adesso in assenza di considerare le più ampie implicazioni": D – Jonathon