我下载了一个世界地图的SVG文件,用Javascript进行SVG操作。我的目标是在点击美国时更改其颜色,再次点击时恢复原始颜色。以下是定义美国的SVG部分:
<path
inkscape:connector-curvature="0"
id="US"
data-name="United States"
data-id="US"
d="m 116.7,450.7 2,-0.9 2.5,-1.4 0.2,-0.4 -0.9,-2.2 -0.7,-0.8
-7.1,-0.5 -6.2,-1.6 -4.8,0.5 -4.9,-0.9 2,-1.2 -6.3,-0.3 -3.3,1
0.5,-2.4 z"
style="fill:#f2f2f2;fill-rule:evenodd" />
由于坐标过多导致代码变得冗长,我删掉了大部分坐标。
这是CSS代码:
.united_states {
fill: blue;
}
以下是使用 JQuery 编写的 JavaScript 代码:
$(function(){
$('#US').click(function(event){
console.log("You just clicked on the United States!!");
$('#US').toggle();
$(this).toggleClass('.united_states');
});
})();
最终,这是它的JsFiddle链接:link 将SVG标签的“fill”属性更改为蓝色可行,但我想单击它并切换它(从蓝色到正常状态)。
感谢您的帮助。
$obj.toggle()
将在block
和none
之间切换其display
CSS属性。这可能不是您想要的。现在,您在元素的style
属性中设置了一个fill
规则集。此规则将优先于.united_states
类选择器,因此,您的规则不会得到更新。您可以以许多方式安排它,例如不设置style
属性而直接设置fill
属性,或在全局样式表中设置所有内容,或者(不太好的)通过向规则类的规则添加!important
关键字... - Kaiido