[解決済み] SVGを外部CSSでスタイルするには?
質問
私は、各 SVG ファイル内ではなく、外部スタイル シートを介して色を変更したいいくつかの SVG グラフィックを持っています。私はグラフィックをインラインに置くのではなく、images フォルダに保存して、それらをポイントしています。
ツールチップが機能するようにこの方法で実装し、さらにそれぞれを
<a>
タグで囲み、リンクできるようにしました。
<a href='http://youtube.com/...' target='_blank'><img class='socIcon' src='images/socYouTube.svg' title='View my videos on YouTube' alt='YouTube' /></a>
そして、以下はSVGグラフィックのコードです。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="stylesheets/main.css" type="text/css"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 56.69 56.69">
<g>
<path d="M28.44......./>
</g>
</svg>
外部CSSファイル(main.css)に以下を記述しました。
.socIcon g {fill:red;}
それでも、グラフィックには何の影響もありません。.socIcon g path {}と.socIcon path {}も試してみました。
何かが正しくありません。おそらく、私の実装は外部CSSの修正を許可していないか、または私が手順を見落としたのでしょうか?あなたの助けを本当に感謝します! 私は、外部スタイルシートを介して SVG グラフィックの色を変更する機能が必要なだけで、ツールチップとリンクの機能を失うことはできません。(私はツールチップなしで生きることができるかもしれませんが。) ありがとうございます!
どのように解決するのですか?
main.css ファイルは、SVG ファイルが HTML にインラインで含まれている場合にのみ、SVG のコンテンツに影響を及ぼします。
https://developer.mozilla.org/en/docs/SVG_In_HTML_Introduction
<html>
<body>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 56.69 56.69">
<g>
<path d="M28.44......."/>
</g>
</svg>
</html>
SVGをファイルで管理する場合、CSSはSVGファイルの内部で定義する必要があります。
スタイルタグを使えば可能です。
http://www.w3.org/TR/SVG/styling.html#StyleElementExample
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="50px" height="50px" viewBox="0 0 50 50">
<defs>
<style type="text/css"><![CDATA[
.socIcon g {
fill:red;
}
]]></style>
</defs>
<g>
<path d="M28.44......./>
</g>
</svg>
サーバーサイドのツールを使って、アクティブなスタイルに応じてstyleタグを更新することができます。 rubyではNokogiriで実現できます。SVGは単なるXMLです。だから、おそらくこれを達成することができる多くのXMLライブラリが利用可能です。
もしそれができなければ、PNGのように使うしかないでしょう。各スタイルのセットを作成し、そのスタイルをインラインで保存します。
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] 箇条書きのない順序なしリストが必要です。
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ジャンボトロンのセンター出しは?
-
[解決済み] 横型リストアイテム
-
[解決済み] セレクトボックスのプレースホルダーを作成するにはどうすればよいですか?
-
[解決済み] <meta charset="utf-8"> vs <meta http-equiv="Content-Type">.
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み] ボディの高さをブラウザの高さの100%にする
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] メモ帳++でXML/HTMLを自動整形/インデントする方法
-
[解決済み] HTMLのdiv要素とspan要素の違いは何ですか?
-
[解決済み] マークダウンにおける相互参照 (名前付きアンカー)