Я пытаюсь создать флажок, который использует svg в качестве флажка.Я хотел собрать svg через интерфейс DOM, но при сборке путь стал бы 0x0, и поэтому галочка не отображалась.
Первоначально я собирал svg как:
let checkboxSvgEl: SVGSVGElement =
document.createElementNS('http://www.w3.org/2000/svg', 'svg')
checkboxSvgEl.setAttribute('xmlns', 'http://www.w3.org/2000/svg')
checkboxSvgEl.setAttribute('viewBox', '0 0 12 10')
checkboxSvgEl.setAttribute('fill', 'none')
checkboxSvgEl.classList.add('ml-checkbox__check-icon')
let svgPathEl: SVGPathElement =
document.createElementNS('http://www.w3.org/2000/svg', 'path')
svgPathEl.setAttributeNS('http://www.w3.org/2000/svg', 'd', 'M10.32.5L12 2.086 4.164 9.5 0 5.562l1.68-1.586 2.484 2.34L10.32.5z')
svgPathEl.setAttribute('fill', '#ffffff')
checkboxSvgEl.append(svgPathEl)
this.checkboxDiv.append(checkboxSvgEl)
Это не сработало, однако, когда svg создается как
let svg = $('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 10" fill="none" class="ml-checkbox__check-icon"><path d="M10.32.5L12 2.086 4.164 9.5 0 5.562l1.68-1.586 2.484 2.34L10.32.5z" fill="#ffffff"></path></svg>')
$(this.checkboxDiv).append(svg)
, оно работает.
Я неправильно использую интерфейсы SVGSVGElement и / или SVGPathElement?
Возможно, это связано с отображением родителя.Он заключен в div, который отображается как inline-flex, однако изменение этого значения для блокировки в консоли dev не устранило проблему.