<polygon>自动闭合,浏览器强制连接末点与起点形成封闭图形;<polyline>仅按序连点成线、不闭合;二者points语法相同但语义不同,选对标签比写法更重要。
直接用 <polygon> 画闭合图形,用 <polyline> 画开放折线——关键不是怎么写标签,而是选对标签、填对坐标、设对样式。
<polygon> 只靠 points 属性就能成形,浏览器会自动把最后一个点连回第一个点,形成封闭区域。
<polygon points="10,10 50,10 30,40" fill="blue" stroke="black" stroke-width="2"></polygon> → 画出一个实心蓝底黑边三角形"100,20 140,50 140,90"
stroke 不设 fill,默认填充为黑色;想透明就得显式写 fill="none"
stroke="none" 或 fill="transparent" 导致看不见,不是路径问题<polyline> 严格按点顺序连线,首尾不相连,适合不需要封闭的线条场景。
<polyline points="10,20 40,30 60,10 80,40" stroke="red" fill="none"></polyline> → 画四段连通的折线,无填充"10,20 30,40 50"(末尾多一个 50),浏览器会丢掉 50,只画前两对点fill="none" 会导致遮挡背景,尤其在叠加绘制时容易误判为“没画出来”<line> 更轻量,DOM 节点少、解析快,适合动态生成的图表线或图标结构线不是“哪个更高级”,而是“哪个更准确”:
<line>:属性最少、语义最准、不易出错<polyline>
<polygon>,别试图用 <polyline> 多写一遍起点真正卡住人的往往不是标签怎么写,而是数据本身:
<svg> 左上角 (0,0),不是页面位置;偏移或裁剪先查 viewBox 是否合理x1="10px" 会被当无效丢弃;负数和小数合法,比如 y="−2.5"
points