それは、バックグラウンドのSVGを "インライン化" により、生産にプリプロセッサを使用することができる人のために実際に可能ですで操作したい部分へのアクセスを得るために、svg
の全体を「スライス」するSASS mixins
のビットを使用します。あなたは、
を要素
<div class="element1"></div>
を持って、あなたのオリジナルのシナリオでは
ので、あなたはあなたのためにSVGをインライン化しますmixin/function
を必要としています。あなたはそう、fill
の制御したいとしましょう:
@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}');
}
$svg-content
変数があなたの<svg>
もの(あなたがmixin
の内側からアクセスしたい)<style>
要素を除くとsvg
タグをラップです,,すなわち: $svg-content = "<path .... />"
これは単なる内部渡された値に含まれる必要があります。
@include inline-svg(salmon, $svg-content);
Wholおよびを合計するにはEの事がアップ、これは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);
}
私はここの可能性が(制限はここでそのアプローチにもあります)かなり大きいと思います。実際にSASS map
を私のmixin
にcss
のスタイルでkey
、value
のペアに渡してcss
スタイルの全体束をsvg
の部分に注入します。
これは技術的には可能ですが、より多くのコンピュテイティが必要ですが、これが完了すると、プロジェクト全体でこのmixin
を再利用するメリットが得られます。
そうそうです。ありがとう。えっ? – Jonathon
@joneb私はそれがきちんとしているとは思わない、私は循環参照の問題を引き起こすと思う。 :) – Phrogz
はい、あなたは正しいです。この例ではきちんとした使い方があります:「もっと広い意味合いを考えていないときに、私が今使っている目的ではうまくいきたいです。」D – Jonathon