【发布时间】:2018-07-13 16:52:35
【问题描述】:
我下载了一个世界地图 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;
}
这里是javascript,使用JQuery:
$(function(){
$('#US').click(function(event){
console.log("You just clicked on the United States!!");
$('#US').toggle();
$(this).toggleClass('.united_states');
});
})();
最后,这是一个 JsFiddle:link
将标签的“填充”属性更改为蓝色有效,但我想在点击时进行,然后切换它(蓝色然后恢复正常)。
感谢您的帮助。
【问题讨论】:
-
$obj.toggle()将在block和none之间切换其displayCSSProperty。可能不是你想要的。现在,您确实在元素的style属性中设置了fill规则。此规则将优先于.united_states类选择器,因此您的规则不会得到更新。您可以通过多种方式安排它,例如不直接设置style属性而是直接设置fill属性,或者将其全部设置在全局样式表中,或者(不太好)通过将!important关键字添加到规则类的规则。 .. -
@Kalido 谢谢你的解释!
标签: javascript jquery html css svg