[解決済み] 背景画像として提供されるSVGイメージの塗りつぶし色を変更するには?
2022-03-23 17:55:45
質問
SVG出力をページコードと直接インラインに配置することで、CSSで塗りつぶしの色を簡単に変更することができます。
polygon.mystar {
fill: blue;
}
circle.mycircle {
fill: green;
}
しかし、SVGがBACKGROUND-IMAGEとして提供されているときに、その"fill"属性を変更する方法を探しています。
html {
background-image: url(../img/bg.svg);
}
今、色を変えるにはどうしたらいいのでしょうか? 可能なのでしょうか?
参考までに、私の外部SVGファイルの中身を紹介します。
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="320px" height="100px" viewBox="0 0 320 100" enable-background="new 0 0 320 100" xml:space="preserve">
<polygon class="mystar" fill="#3CB54A" points="134.973,14.204 143.295,31.066 161.903,33.77 148.438,46.896 151.617,65.43 134.973,56.679
118.329,65.43 121.507,46.896 108.042,33.77 126.65,31.066 "/>
<circle class="mycircle" fill="#ED1F24" cx="202.028" cy="58.342" r="12.26"/>
</svg>
解決方法は?
似たようなことが必要で、CSSにこだわりたかった。ここでは、プレーンなCSSだけでなく、LESSやSCSSのミキシンを紹介します。残念ながら、ブラウザのサポートが少し甘いです。ブラウザサポートの詳細は下記をご覧ください。
LESSのミキシンです。
.element-color(@color) {
background-image: url('data:image/svg+xml;utf8,<svg ...><g stroke="@{color}" ... /></g></svg>');
}
LESSの使い方。
.element-color(#fff);
SCSS mixinです。
@mixin element-color($color) {
background-image: url('data:image/svg+xml;utf8,<svg ...><g stroke="#{$color}" ... /></g></svg>');
}
SCSSの使い方。
@include element-color(#fff);
CSSです。
// color: red
background-image: url('data:image/svg+xml;utf8,<svg ...><g stroke="red" ... /></g></svg>');
詳細はこちら SVGの完全なコードをCSSファイルに埋め込むことについて。また、ブラウザの互換性についても言及されていますが、これについてはちょっと小さすぎますね。
関連
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] リスト項目にマウスを置いたときに、カーソルを手の形に変えるには?
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] 同じ要素にbackground-imageとCSS3グラデーションを組み合わせるにはどうすればよいですか?
-
[解決済み] hr要素の色を変更する
-
[解決済み] IMGとCSSのbackground-imageはいつ使い分ける?
-
[解決済み] svg要素の色を変更するには?
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
-
[解決済み] CSSを使用してSVG画像の色を変更する方法(jQuery SVG image replacement)とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み] HTMLアンカーは'name'と'id'のどちらで作成するのが良いですか?
-
[解決済み] テーブル内のテキストアラインクラス
-
[解決済み] HTML5で(非空白の)自己閉鎖タグは有効ですか?
-
[解決済み] localStorage、sessionStorage、session、cookieの違いは何ですか?
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み] 残りの幅を埋めるためにdivを展開する