当前位置: 首页 > 知识库问答 >
问题:

SVG路径区域重叠

鲁旭
2023-03-14

我今天刚开始玩SVG,我不知道如何在没有悬停区域重叠问题的情况下使用非矩形形状进行悬停,就像你在我的小提琴中看到的那样。

<svg height="444" width="257" class="svg svg1">
  <path d="M0 148 L257 0 L257 297 L0 444 Z" style="fill:lime;stroke:none;"  
      onmouseover="document.getElementById('fade1').style.opacity = '.9';" 
      onmouseout="document.getElementById('fade1').style.opacity = '0';"/>
</svg>  
<svg height="444" width="257" class="svg svg2">
  <path d="M0 148 L257 0 L257 297 L0 444 Z" style="fill:lime;stroke:none;"  
      onmouseover="document.getElementById('fade2').style.opacity = '.9';" 
      onmouseout="document.getElementById('fade2').style.opacity = '0';"/>
</svg>  
<svg height="444" width="257" class="svg svg3">
  <path d="M0 148 L257 0 L257 297 L0 444 Z" style="fill:lime;stroke:none;"  
      onmouseover="document.getElementById('fade3').style.opacity = '.9';" 
      onmouseout="document.getElementById('fade3').style.opacity = '0';"/>
</svg>

共有1个答案

王才英
2023-03-14

您必须将所有路径放置在同一个SVG中,以便使悬停效果像您所希望的那样工作。这是由于SVG元素(而不是路径)相互重叠造成的,这与Z-indexes并不像您希望的那样工作

话虽如此,您不能很容易地定位 s,所以我使用这个工具来应用您所拥有的样式。或者,您可以将它们放在单独的 元素中,并按此方式定位它们

另一个需要注意的是,您应该将:hover效果应用于路径,而不是SVG元素

/* SVG */
<svg height="1150" width="257">
    <path d="M0 244L257 96L257 393L0 540z" style="fill:lime;stroke:none;"/>
    <path d="M0 545L257 397L257 694L0 841z" style="fill:lime;stroke:none;"/>
    <path d="M0 846L257 698L257 995L0 1142z" style="fill:lime;stroke:none;"/>
</svg>

/* CSS */
svg {
    margin:0 auto;
    display:block;
    width:257px;
}
svg path {
    opacity:.3;
}
svg path:hover {
    opacity:1;
}

演示

附注。我假设javascripg的onmouseoveronmouseout来自一次失败的尝试?

 类似资料:
  • 我想知道如何高亮(改变颜色)一个SVG路径的自重叠区域(甚至折线)。实际上,如果我更改路径的不透明度和笔画属性,则自翻转区域的颜色不会改变。 例如,具有以下路径,重叠区域不是红色-暗色。 以下是我到目前为止发现的,但对解决问题没有帮助。http://www.svgopen.org/2005/papers/abstractsvgopen/index.html#s2。 谢谢

  • SVG 路径 - <path> <path> 元素用于定义一个路径。 下面的命令可用于路径数据: M = moveto L = lineto H = horizontal lineto V = vertical lineto C = curveto S = smooth curveto Q = quadratic Bézier curve T = smooth quadratic Bézier c

  • SVG中的路径概念可以是一个形状的外框,也可以是用来裁剪的线条,这个线条可以被描边,封闭时还可以被填充。 路径和折线或多边形不同之处在于,路径可以是直线也可以曲线,因此使用路径可以构造更为复杂的几何图形。 我们可以把路径看成是手工绘图的笔迹,可以用点的集合和绘制方式(如线段或圆弧)来描述。 path 标签 path 标签用来创建一条路径,路径元素的基本属性是路径数据,用 d='path data'

  • 所以我有一个超级奇怪的案例(至少对我来说是超级奇怪的)。 SVG路径不包含在SVG元素中。我已经尝试了很多事情来让这个工作,但没有一个是有效的,现在怀疑我错过了什么。 我有一把JS小提琴:https://jsfidle.net/67w3hays/ 正如您所看到的,youtube图标比容器大,因此无法伸长到容器中 代码: 答案的预期结果: 我希望这个SVG路径适合于18宽和18高的容器(或者接近18

  • 我有一个SVG计时器。有一个路径显示当前状态。但是路径重叠得很厉害,你可以在我附上的截图中看到: 这个屏幕截图的检查器的代码是: SVG的生成方式如下: 编辑:这是来自CCPROG的建议之后的计时器:

  • 我有一个箭头头的路径,我想做一个颜色过渡动画,从左到右。 我已经为线和箭头做了这件事,但它似乎不是同步的。我希望线和箭头都过渡颜色无缝。 CSS