Mic*_*oos 0 html javascript svg
当我在DOM中已经存在的SVG元素上使用setAttribute('viewBox')时,它被正确设置(使用大写'b').
当我在JavaScript中创建一个SVG元素并在那里添加'viewBox'属性...它以全小写字母结尾在DOM中.
为什么是这样?
document.querySelector('#circle svg').setAttribute('viewBox', '190 190 20 20');
let svg = document.createElement('svg'),
circle = document.createElement('circle');
circle.setAttribute('cx', 200);
circle.setAttribute('cy', 200);
circle.setAttribute('r', 10);
svg.setAttribute('viewBox', '190 190 20 20');
svg.appendChild(circle);
document.body.appendChild(svg);
// document.querySelector('#circleGenerated svg').setAttribute('viewBox', '190 190 20 20');Run Code Online (Sandbox Code Playgroud)
svg {
border: 2px dashed #666;
width: 200px;
height: 200px;
}Run Code Online (Sandbox Code Playgroud)
<p>Existing svg with dynamically added viewBox attribute:</p>
<div id="circle">
<svg>
<circle cx="200" cy="200" r="10" id="center-point" fill="#bbb" />
</svg>
</div>
<p>Generated svg with dynamically added viewBox attribute:</p>Run Code Online (Sandbox Code Playgroud)
你必须使用document.createElementNS("http://www.w3.org/2000/svg", "svg")而不是document.createElement('svg')
document.querySelector('#circle svg').setAttribute('viewBox', '190 190 20 20');
let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"),
circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute('cx', 200);
circle.setAttribute('cy', 200);
circle.setAttribute('r', 10);
svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink");
svg.setAttribute('viewBox', '190 190 20 20');
svg.appendChild(circle);
document.body.appendChild(svg);
// document.querySelector('#circleGenerated svg').setAttribute('viewBox', '190 190 20 20');Run Code Online (Sandbox Code Playgroud)
svg {
border: 2px dashed #666;
width: 200px;
height: 200px;
}Run Code Online (Sandbox Code Playgroud)
<p>Existing svg with dynamically added viewBox attribute:</p>
<div id="circle">
<svg>
<circle cx="200" cy="200" r="10" id="center-point" fill="#bbb" />
</svg>
</div>
<p>Generated svg with dynamically added viewBox attribute:</p>Run Code Online (Sandbox Code Playgroud)