ボタンをクリックしたときにSVG内のリンクされたイメージをデタチュレートしようとしています(最初はカラーでロードする必要があります)。SVGにリンクされている画像の彩度を下げるにはどうしたらいいですか?
私はこれをやって試してみた:
$("#greyOut").click (function() {
$("#image1").css("filter", "grayscale(100%)");
});
私もこれをやって試してみました:
$("#greyOut").click (function() {
$("#image1").toggleClass("desaturate");
});
.desaturate{
filter: grayscale(100%);
}
マイSVGのコードは次のようになります。
<svg version="1.1" id="mySVG" viewBox="0 0 1036.1863 541.28723" height="152.76329mm" width="292.43481mm">
<defs id="defs1"/>
<g transform="matrix(1,0,0,1,5.3227865,-408.7683)" id="svgGroup" style="fill:none">
<image xlink:href="adamPNG.png" y="416.47034" x="-5.3228474" id="image1" preserveAspectRatio="none" height="533.58521" width="1029.7035" />
//I've a lot of paths here so I've cut them out for my question
<path id="path1"...style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
</path>
</g>
</svg>
私も試してみましたidを使わずに$("image")
と呼んでも問題ありません。リンクされた画像のCSSを変更することはできますか?または<image>
のxlink:href
属性を画像のぼやけたバージョンに設定するだけですか?
更新
それは私がこれを行う場合に動作します:
$("#greyOut").click (function() {
$('image').attr('xlink:href', 'adamPNGgrey.png');
});
をそれが可能だ場合、私はまだ、むしろ別の画像にリンクするよりも、CSSでこれを行うことを好むだろう...
CSS内部でクラスを切り替えることができるかどうかはわかりませんが、おそらく属性ではなくクラスではありません。 - http://stackoverflow.com/questions/8638621/jquery-svg-why-cant-i-addclass –
あなたのコードは正常に動作します:https://jsfiddle.net/blonfu/aqdj01kn/2/ – blonfu
JSFiddleコード私のためにはうまくいかないでしょう:/ボタンをクリックしても何も起こりません...どのブラウザを使っていますか? –