[解決済み] 埋め込みSVGにスタイルを適用するには?
2022-09-10 21:27:33
質問
SVGを直接文書に取り込む際に
<svg>
タグを使用して SVG を文書に直接含める場合、文書のスタイルシートを介して SVG に CSS スタイルを適用することができます。しかし、私は、埋め込まれた SVG にスタイルを適用しようとしています(<object>
タグを使用) にスタイルを適用しようとしています。
以下のコードのようなものは使用できないのでしょうか?
object svg {
fill: #fff;
}
どのように解決するのですか?
短い答え:いいえ、スタイルはドキュメントの境界を越えて適用されないからです。
しかし、あなたは
<object>
タグがあるので、svg ドキュメントにスクリプトを使用してスタイルシートを挿入することができます。
このようなもので、このコードは
<object>
が完全にロードされていることを想定しています。
var svgDoc = yourObjectElement.contentDocument;
var styleElement = svgDoc.createElementNS("http://www.w3.org/2000/svg", "style");
styleElement.textContent = "svg { fill: #fff }"; // add whatever you need here
svgDoc.getElementById("where-to-insert").appendChild(styleElement);
を挿入することも可能です。
<link>
要素を挿入して、外部スタイルシートを参照することもできます。
var svgDoc = yourObjectElement.contentDocument;
var linkElm = svgDoc.createElementNS("http://www.w3.org/1999/xhtml", "link");
linkElm.setAttribute("href", "my-style.css");
linkElm.setAttribute("type", "text/css");
linkElm.setAttribute("rel", "stylesheet");
svgDoc.getElementById("where-to-insert").appendChild(linkElm);
さらに別の方法として、最初の方法で style 要素を挿入し、@import 規則を追加することもできます。
styleElement.textContent = "@import url(my-style.css)"
.
もちろん、スクリプトを使わずに、svgファイルからスタイルシートに直接リンクすることもできます。以下のいずれかが機能するはずです。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="my-style.css" type="text/css"?>
<svg xmlns="http://www.w3.org/2000/svg">
... rest of document here ...
</svg>
または
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<link href="my-style.css" type="text/css" rel="stylesheet"
xmlns="http://www.w3.org/1999/xhtml"/>
</defs>
... rest of document here ...
</svg>
2015年アップデート:使用できるようになりました。 jquery-svg プラグインを使用すると、埋め込まれたSVGにjsスクリプトとcssスタイルを適用することができます。
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] .css()を使って!importantを適用するには?
-
[解決済み] HTML5で(非空白の)自己閉鎖タグは有効ですか?
-
[解決済み] CSSファイルで相対URLを使用していますが、どの位置からの相対位置なのでしょうか?
-
[解決済み] 背景画像として提供されるSVGイメージの塗りつぶし色を変更するには?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BootstrapのCollapse Navbarが動作しない
-
[解決済み] input type="button "に背景画像を追加するには?
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] HTMLページからのリダイレクト
-
[解決済み] <meta charset="utf-8"> vs <meta http-equiv="Content-Type">.
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み] WebSocketとサーバー送信型イベントの比較/EventSource
-
[解決済み] IMGとCSSのbackground-imageはいつ使い分ける?
-
[解決済み] マークダウンにおける相互参照 (名前付きアンカー)
-
[解決済み] CSSを使用してSVG画像の色を変更する方法(jQuery SVG image replacement)とは?