【问题标题】:How do I properly target SVG symbol paths on hover?如何在悬停时正确定位 SVG 符号路径?
【发布时间】:2019-05-10 21:10:22
【问题描述】:

悬停时我似乎无法正确定位符号的路径笔划。

有一个类似的条目,但它似乎没有针对悬停。 (Controlling SVG colors with CSS)

在尝试更改使用标签上的笔画时,它只是在之前没有笔画的地方“添加”了一个笔画

 .terminal:hover {cursor:pointer;stroke:#000;}

当试图定位路径本身时,它根本不起作用

 .terminal:hover path {stroke:#000;}

符号是否会改变 CSS 定位?

https://codepen.io/trevcis/pen/OYMLqO

【问题讨论】:

标签: css svg


【解决方案1】:

.terminal:hover path {stroke:#000;} 替换为.terminal:hover use {stroke:#000;},因为.terminal 内部的实际节点是use,而不是path。它适用于 Chrome、FF 和 Safari。不确定 IE。


更新答案:

如果您想使用一个相同的符号,但又想根据悬停更改每个符号的笔触颜色,您可以尝试使用 CSS 变量。试试下面:

.terminal {
  --color-st0: #f00; /* #54565A */
  --color-st1: #0f0; /* #E2ECF5 */
}

.terminal:hover {
  cursor:pointer;
}

.terminal:hover use {
  --color-st0: #333333;
  --color-st1: #333333;
}

.st0TERMINAL{
  fill:none;
  stroke: var(--color-st0);
  stroke-width:6;
  stroke-miterlimit:10;
}

.st1TERMINAL{
  fill:none;
  stroke: var(--color-st1);
  stroke-width:2;
  stroke-miterlimit:10;
}

.st2TERMINAL{
  fill:#789904;
}
<svg id="assets" xmlns="http://www.w3.org/2000/svg" viewBox="-6 -6 200 200">
  <symbol  id="terminal" viewBox="0 0 16.8 16.8">
    <path class="st0TERMINAL" d="M-0.8,2.6c0,0-1.8,0-1.8-1.8v-1.6c0,0,0-1.8,1.8-1.8h1.6c0,0,1.8,0,1.8,1.8v1.6c0,0,0,1.8-1.8,1.8H-0.8z"/>
    <path class="st1TERMINAL" d="M-0.8,2.6c0,0-1.8,0-1.8-1.8v-1.6c0,0,0-1.8,1.8-1.8h1.6c0,0,1.8,0,1.8,1.8v1.6c0,0,0,1.8-1.8,1.8H-0.8z"/>
    <path class="st2TERMINAL" d="M-0.8,2.6c0,0-1.8,0-1.8-1.8v-1.6c0,0,0-1.8,1.8-1.8h1.6c0,0,1.8,0,1.8,1.8v1.6c0,0,0,1.8-1.8,1.8H-0.8z"/>
  </symbol>
  <g id="terminal1" class="terminal">
    <use xlink:href="#terminal"  width="12" height="12" x="0" y="0" style="overflow:visible;"/>
  </g>  
  <g id="terminal2" class="terminal">
    <use xlink:href="#terminal"  width="12" height="12" x="5" y="5" style="overflow:visible;"/>
  </g>
</svg>

【讨论】:

  • 我更新了笔,它似乎也能正常工作? codepen.io/trevcis/pen/OYMLqO
  • @user2979402 对不起,我想我误解了你的问题。检查我更新的答案。希望这次我得到你的正确! ;)
  • @user2979402 太棒了,很高兴能够提供帮助!实际上,这是一个我从未想过的好问题。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多