多个svg渲染path时复用相同的defs market造成的market渲染异常及解决办法

文章讲述了在使用SVG开发tree组件时遇到的问题,即由于多个组件复用导致marker标签ID冲突,从而影响渲染。作者指出DOM中ID的唯一性原则,并分享了解决方案——为marker标签ID赋予动态属性值,确保每个组件的独立性。

问题及背景

用svg开发了个tree组件,path的箭头用的defs + marker标签

<defs>
<marker id="linkArrow" viewBox="0 0 10 6" refX="5" refY="0" markerWidth="10" markerHeight="6" orient="180">
<path d="M 5 0 L 0 6 L 10 6z" fill="#76788B" style="stroke-width: 0;"></path>
</marker>
</defs>

当同一个dom下复用多次tree组件时,market渲染异常,有时候显示有时候不显示

问题原因

属于html的基础知识了,dom下标签的id是不能重复的,开始时我忽略了这个问题,结果很打脸

解决方法

知道原因后解决方法也就呼之欲出了,在组件中为market标签的id赋动态属性值,效果如下:

<marker id="linkArrow1672911474088" viewBox="0 0 10 6" refX="5" refY="0" markerWidth="10" markerHeight="6" orient="180">
<path d="M 5 0 L 0 6 L 10 6z" fill="#76788B" style="stroke-width: 0;"></path>
</marker>

小感慨

基础知识要牢记,且开发中要谨记

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值