SVG 路径 'fill' 的着色超出预期

标签 svg

我有一个已定义为 SVG 路径的形状,我想用纯色填充它。路径本身看起来是正确的,并且 stroke遵循我想要的形状。但是,当我更改fill时属性(property)来自 none到一种颜色,颜色溢出我定义的曲线并创建一个矩形形状和一个 Blob 。

在这些示例中,我使用内联 SVG style属性,但我使用 CSS 样式填充 <path> 得到相同的结果.

<p>Path with stroke looks correct:</p>
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="210" height="297" viewBox="0 0 210 297" version="1.1">
  <path
   style="fill:none;stroke-width:0.3;stroke:#000" 
   d="m47.6 69.5c0 22.9 0 45.9 0 68.8 37 0 74.1 0 111.1 0 0-22.9 0-45.9 0-68.8m-111.1 0c7.5-9.2 17.7-17.8 30-18.8 11.1-0.8 20.6 7.2 26.4 15.9 5.6 9 12.6 18.9 23.6 21.3 11.1 2.1 21-5.6 27.7-13.7 1.3-1.5 2.5-3.1 3.5-4.7"/>
</svg>

<p>But 'fill' covers more than it should:</p>

<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="210" height="297" viewBox="0 0 210 297" version="1.1">
  <path 
   style="fill:blue;stroke-width:0.3;stroke:#000"
   d="m47.6 69.5c0 22.9 0 45.9 0 68.8 37 0 74.1 0 111.1 0 0-22.9 0-45.9 0-68.8m-111.1 0c7.5-9.2 17.7-17.8 30-18.8 11.1-0.8 20.6 7.2 26.4 15.9 5.6 9 12.6 18.9 23.6 21.3 11.1 2.1 21-5.6 27.7-13.7 1.3-1.5 2.5-3.1 3.5-4.7"/>
</svg>

如何解决此问题并使填充颜色遵循形状顶部的曲线?

最佳答案

这是您对路径进行编码的方式。如果您查看 d 属性,您会发现中间有一个 m 命令(移动到)。这意味着您没有连续编码路径。我就是这样做的:

<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="210" height="297" viewBox="0 0 210 297" version="1.1">
  <path 
   style="fill:red;stroke-width:0.3;stroke:#000"
   d="M47.6,69.5
      C55.1,60.3,65.3,51.7,77.6,50.7
      C88.7,49.9,98.2,57.9,104,66.6
      C109.6,75.6,116.6,85.5,127.6,87.9
      C138.7,90,148.6,82.3,155.3,74.2
      C156.6,72.7,157.8,71.1,158.8,69.5
      V138.3H47.6z"/>
</svg>

关于SVG 路径 'fill' 的着色超出预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030219/

相关文章:

html - iOS WebKit 中的透明 SVG

javascript - d3 可拖动 svg 路径线段

javascript - 如何从行尾(SVG)绘制动画?

html - 如何使剪辑路径在 Microsoft Edge 上工作?

java - 如何从 SVG 路径创建 BufferedImage?

charts - d3.json将数据传递到d3.svg.arc()

css - SVG 未在 Google map 的可见区域之外绘制

html - chrome 中的灰度通过 css

css - 更改 svg 路径的颜色

css - IE 中的 SVG 背景 repeat-x