【问题标题】:How to fix gap between svg elements如何修复svg元素之间的间隙
【发布时间】:2018-07-14 15:42:56
【问题描述】:

问题

我注意到一个矩形和一个路径之间有一个奇怪的间隙,根据坐标,它应该看起来像这样:

但看起来像这样:

它出现在 Firefox、Edge 和 IE 中,在 Chrome 中仅在某些缩放级别或添加 Stoke 时出现。


我尝试过:

Chrome 中的结果(v64.0.3282.140):

Firefox(v58.0.1) 中的结果:

感谢您的考虑


示例

<svg>
  <g transform="matrix(1,0,0,1,60,10)">
    <rect width="60" height="10" x="-30" y="0" rx="5" ry="5"></rect>
    <path d="M15,10 C0,10 15,25 0,25 C-15,25 0,10 -15,10" ></path>
  </g>
</svg>

<style>
  g{
    stroke: red;
    fill: black;
  }
</style>

【问题讨论】:

  • 你能张贴一张“错误”的截图吗?
  • path 的 d 属性的写法很奇怪。此行 d="M 15 10 C 0 10 15 25 0 25 C -15 25 0 10 -15 10" 应为 d="M15,10 C0,10 15,25 0,25 C-15,25 0,10 -15,10"
  • 感谢@SergeyRudenko 的回复,我已经在描述中发布了截图,这里是link。遗憾的是,按照您建议的方式编写路径并没有解决问题。
  • @SergeyRudenko:svg 在点规范中支持空格而不是逗号

标签: html svg browser


【解决方案1】:

rects 的轮廓似乎以不同于黑色的颜色呈现。

在没有 style 元素的情况下无法重现 Chrome 63 (63.0.3239.132) 上的行为,甚至无法扫描缩放级别。

但是,一种可能的解决方法是使用 closepath 说明符关闭路径(路径规范中的 Zz;有关 svg 规范的相关部分,请参阅 here):

<path d="M15,10 C0,10 15,25 0,25 C-15,25 0,10 -15,10"></path>

如果此修改不够,请补充路径以沿着路径定义的形状覆盖的 x 间隔在矩形的轮廓上绘制:

<path d="M15,10 C0,10 15,25 0,25 C-15,25 0,10 -15,10 l0,-1 L15,9 Z"></path>

【讨论】:

  • 感谢您的回答@collapsar,我认为我没有足够清楚地表达我想要实现的目标。我想用笔划来设计这两个元素,所以它们看起来像this。这就是为什么我没有使用closepath 说明符。我编辑了我的问题并试图让它更清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多