JS动态生成SVG对象动态设置use和属性

需求:

JS动态生成SVG对象,然后动态生成use子元素并设置xlink:href属性;然后appendChild到页面DOM;

这是我在使用svg制作icon图标的时候遇到的问题,就是symbol 然后svg use引用,方便制作icon;

通用方法:

直接外围一个div, 然后

div.innerHTML = '<svg class="icon"><use xlink:href="#'+name+'"></use></svg>'

这样是可以的,但是这不是本文的重点,本文重点是JS动态生成对象并插入。

动态生成:

const ns = 'http://www.w3.org/2000/svg'; // 元素命名空间
const childNS = 'http://www.w3.org/1999/xlink'; // xlink命名空间

// ---------------------------------------------------------------

// 创建svg对象,注意用 createElementNS
const svg = document.createElementNS(ns, 'svg');

// 设置svg对象的class
svg.setAttribute('class', 'icon');

// ---------------------------------------------------------------

// 创建use子对象
const child = document.createElementNS(ns, 'use');

// 设置xlink:href属性,注意用 setAttributeNS
child.setAttributeNS(childNS, 'xlink:href', '#'+name);

// ---------------------------------------------------------------

// 附加子对象到svg
svg.appendChild(child);

// ---------------------------------------------------------------
// 附加到body显示
document.body.appendChild(svg);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值