To rzeczywiście możliwe dla tych, którzy mogą korzystać preprocesory w produkcji, przez "inline" background SVG, i kawałek SASS mixins
, który "wycina" cały bełkot svg
, aby uzyskać dostęp do części, którymi chcesz manipulować przez SASS variables
.
W oryginalnym scenariuszu masz element
<div class="element1"></div>
,
więc trzeba mixin/function
które inline SVG dla Ciebie.Powiedzmy, że chcesz sterować z fill
tak:
@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}');
}
gdzie $svg-content
zmienna jest Twój <svg>
rzeczy bez <style>
element (którego chcesz uzyskać dostęp z wnętrza mixin
) i owijania svg
tag ,, tj: $svg-content = "<path .... />"
To po prostu trzeba być dołączone wartości przekazywane wewnątrz:
@include inline-svg(salmon, $svg-content);
Podsumowując whol e rzeczą w górę, jest to przykład Sass kod:
$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);
}
myślę tutaj możliwości są dość duże (istnieją również ograniczenia tutaj do tego podejścia). I rzeczywiście przekazać SASS map
do moich mixin
z css
stylów zdefiniowanych jako key
, value
pary, aby wstrzyknąć całą masę css
stylów do <style>
części svg
.
Jest to technicznie możliwe, ale wymaga większej złożoności, ale gdy już to zrobisz, uzyskasz korzyści z ponownego wykorzystania tego mixin
w swoim projekcie (projektach), co jest fajne.
wydaje się, że tak. dzięki. byłoby fajnie chociaż eh? – Jonathon
@joneb Nie sądzę, że byłoby to fajne, myślę, że spowodowałoby to problemy z okrągłym odwołaniem. :) – Phrogz
tak, masz rację. użycie schludnego w tym przypadku jest związane z: "Chciałbym, żeby działało w tym celu, jaki mam teraz, bez uwzględnienia szerszych implikacji": D – Jonathon