在悬停链接更改填充单独的SVG多边形

时间:2015-04-23 12:15:06

标签: css svg

我在左栏中有一个房间列表,在右栏中有一个SVG楼层平面图。我有两个问题:

当使用纯CSS滚动左栏中的链接时,有没有办法让我更改楼层平面图中房间的颜色?

如果答案是否定的,我采取什么方法?我猜猜某些JS,但不知道从哪里开始或搜索什么。

这是我到目前为止的一个实例:



div#list {float:left; width:50%}
div#list ul li a {color:#333}
div#list ul li a:hover {color:#ED5D45}
div#map {float:right; width:50%}
div#map svg#plan polygon.building {fill:#CCC}
div#map svg#plan a polygon.studio-j {fill:#333}
div#map svg#plan a:hover polygon.studio-j {fill:#ED5D45}

<div id="list">
  <ul>
    <li class="j"><a href="/studios/j/">Studio J</a></li>
  </ul>
</div>
<div id="map">
<svg id="plan" x="0" y="0" viewBox="0 0 412 408" enable-background="new 0 0 412 408" xml:space="preserve">	 
  <polygon class="building" points="0,68.1 377.2,0 411,407.3 20,405.7 "/>
  <a xlink:href="/studios/j/" xlink:title="Studio J">
    <polygon class="studio-j" points="214,126 261,126 261,131 388,131 377.2,0.4 213.5,30.2 "/>
  </a>
</svg>
</div>
&#13;
&#13;
&#13;

在这里小提琴:https://jsfiddle.net/morgyface/7utpx1n6/

1 个答案:

答案 0 :(得分:1)

由于链接与SVG无关,因此无法使用CSS。

需要JS来简化这个问题。

或者,只需将链接放在#map div中(没有列表结构)并相应地调整CSS。

&#13;
&#13;
a:hover {
  color: red
}
div#map {
  float: right;
  width: 50%
}
div#map svg#plan polygon.building {
  fill: #CCC
}
svg#plan a polygon.studio-j {
  fill: #333
}
svg#plan a:hover polygon.studio-j {
  fill: #ED5D45
}
.j:hover + svg#plan a polygon.studio-j {
  fill: green;
}
&#13;
<div id="map">
  <a class="j" href="/studios/j/">Studio J</a>

  <svg id="plan" x="0" y="0" viewBox="0 0 412 408" enable-background="new 0 0 412 408" xml:space="preserve">
    <polygon class="building" points="0,68.1 377.2,0 411,407.3 20,405.7 " />
    <a xlink:href="/studios/j/" xlink:title="Studio J">
      <polygon class="studio-j" points="214,126 261,126 261,131 388,131 377.2,0.4 213.5,30.2 " />
    </a>

  </svg>
</div>
&#13;
&#13;
&#13;