2016-07-21 3 views
0

私は今日、ホバーでsvgの塗りつぶし色を変更する方法についてかなりの時間研究してきました。私はオブジェクトタグを使用し、CSSファイルにリンクして外部にスタイルを設定できるようにしています。しかし、私は実際にSVGそのものにマウスを乗せたときにのみこれを動作させることができます。私は自分のオブジェクトとテキストラベルをタグ内に持っていて、SVGの塗りつぶしとテキストラベルの色を同時に変更したいと思います。オブジェクトからさらにターゲットを絞ってみると、うまくいきません。私はオブジェクト内のSVGが親要素を認識しないので、それが問題かどうかはわかりません。どんな助けもありがとう!以下は私のhtmlのスニペットです。私はクラス "icon-md"が私のSVGの高さと幅しか定義していないことを指摘しておきます。SVGの塗りつぶし色を別の要素のホバーで変更します

<div class="icon-button"> 
      <a href="#"> 
       <object type="image/svg+xml" class="icon-md" data="img/load-board.svg"></object><h3 class="icon-label">Load Board</h3> 
      </a> 
     </div> 

ここに私のSVGファイルのHTMLもあります。私は実際のパスに "path"のIDを与えました。これが私の外部CSSファイルで特に目標としているものです。

<?xml-stylesheet type="text/css" href="../stylesheets/main.css"?> 
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="64" height="64"> 
<path id="path" style="text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans" d="M 5 5 L 5 6 L 5 26 L 5 27 L 6 27 L 26 27 L 27 27 L 27 26 L 27 6 L 27 5 L 26 5 L 6 5 L 5 5 z M 7 7 L 25 7 L 25 25 L 7 25 L 7 7 z M 10 10 L 10 15 L 15 15 L 15 10 L 10 10 z M 17 10 L 17 15 L 22 15 L 22 10 L 17 10 z M 10 17 L 10 22 L 15 22 L 15 17 L 10 17 z M 17 17 L 17 22 L 22 22 L 22 17 L 17 17 z" overflow="visible" font-family="Bitstream Vera Sans"/> 
</svg> 
+0

あなたは、負荷board.svg以内にこれを実行する必要があると思いますが、あなたは私たちにそれを示していません。 –

答えて

3

は、あなたがそのようなことを考えていましたか?

div{ 
 
    padding:10px; 
 
    border:1px solid black; 
 
} 
 
div:hover svg path, 
 
div:hover{ 
 
    fill:red; 
 
    color:red; 
 
}
<div> 
 
This is plain text 
 
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="64" height="64"> 
 
<path id="path" style="text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans" d="M 5 5 L 5 6 L 5 26 L 5 27 L 6 27 L 26 27 L 27 27 L 27 26 L 27 6 L 27 5 L 26 5 L 6 5 L 5 5 z M 7 7 L 25 7 L 25 25 L 7 25 L 7 7 z M 10 10 L 10 15 L 15 15 L 15 10 L 10 10 z M 17 10 L 17 15 L 22 15 L 22 10 L 17 10 z M 10 17 L 10 22 L 15 22 L 15 17 L 10 17 z M 17 17 L 17 22 L 22 22 L 22 17 L 17 17 z" overflow="visible" font-family="Bitstream Vera Sans"/> 
 
</svg> 
 
</div>

+0

はい!これは、私が望むやり方で動作します。しかし、私はあなたが直接HTML内にSVGコードを置くことに気づいた。 メソッドを使用してこれを実行することが可能かどうかを知っていますので、参照されるたびにSVGコードをHTMLに挿入する必要はありませんか?もしそうでなければ、私はこのソリューションで前進することができます。それは、私が望む最終結果をまだ達成しているからです。 – lblankenship

+0

@lblankenshipあなたはオブジェクトに置くことができますが、svgファイルにCSSを直接​​参照させる必要があります.HTMLリファレンスがあればCSSは動作しません。 –

+0

@RobertLongsonだから、私は自分のCSSがSVGファイルの中に直接必要だと言っていますか?私はすでに私の外部CSSファイルへの参照を持っていますが、SVG自体のホバー上で動作するようになっただけです。 – lblankenship

-1

SVGを要素のソース属性またはデータ属性として使用するのではなく、インラインで使用しようとしましたか?更新記事で編集

https://css-tricks.com/svg-use-with-external-reference-take-2/

+0

私はこれを避けようとしています。私が取り組んでいるプロジェクトはページあたりかなりの数のSVGを持っている可能性があり、おそらく数百のページがあるからです。メンテナンスの観点からは、それが私にとって最善ではないと思う。 – lblankenship

+0

私は混乱しています...オブジェクトのデータ属性の外部リソースから参照する場合は、? –

+0

あなたが私のSVGを参照したものを何らかの理由でまったく表示しない場合。私はこの記事https://svgontheweb.com/を読んで、リストされたオブジェクトメソッドを使いました。私は彼らが言っていたことをして、ホバーの塗りつぶしを変更することができました。しかし、私はSVG自体をホバーするのではなく、まったく別の要素を持ってSVGの色を変えたいと思っています。また、クラスicon-mdはSVGのサイズを定義するだけです。私はSVGファイル内のhtmlを実際に更新し、パスに "path"のIDを与えました。これは、CSSで:hoverイベントを参照しています。 – lblankenship

関連する問題