You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SVG中部分polygon的stroke-dasharray属性不生效?

为什么Polygon的Stroke-Dasharray有时失效?

你的问题核心出在Polygon元素的闭合特性上:

  • Polygon是闭合图形,哪怕只定义两个点,浏览器也会自动把终点连回起点,形成闭合路径。比如line_1的竖线,实际渲染的路径是从(194.2,121)到(194.2,175),再原路返回起点,等于把同一条线重复画了一次。
  • Stroke-dasharray是作用在整个闭合路径上的。当闭合路径的总长度和dasharray的循环单元(5+2=7)形成特殊比例时,虚线的起始段和结束段会在起点重合叠加,视觉上就变成了实线。你例子里的竖线长度为54,闭合后总长度108,这个长度与7的比例刚好触发了叠加;而line_3的横线长度34.2,闭合后总长度68.4,比例未触发叠加,所以还能看到虚线效果。
  • 而Line元素是开放路径,不会自动闭合,路径就是两个点之间的线段,因此dasharray能按正常逻辑渲染虚线。
解决方案
  • 绘制直线优先用<line>元素,完全适配直线场景,不存在闭合带来的渲染问题。
  • 如果非要用多边形类元素,换成<polyline>——它是开放的多边形,不会自动闭合路径,两个点的polyline和line效果一致,能正常渲染虚线:
<polyline id="line_1" points="194.2,121.0 194.2,175.0 " fill="none" stroke-dasharray="5,2" stroke="#ff0000"></polyline>

内容的提问来源于stack exchange,提问作者Jamison Jiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:35:29