我正在使用d3生成一个SVG可视化图表,希望它能以响应式的方式随容器缩放。我可以直接创建一个具有这种行为的SVG元素,但当我编写生成相同SVG标记的d3脚本时,它无法自适应缩放。
以下是生成SVG元素的d3代码:
以下是翻译后的内容:
以下是生成SVG元素的d3代码:
var arc = d3.svg.arc()
.startAngle(0)
.innerRadius(36)
.outerRadius(48);
var svg = d3.select('#d3').append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewbox', '0, 0, 100, 100')
.attr('preserveAspectRatio', 'xMidYMid')
.append('g')
.attr('transform', 'translate(50, 50)');
var loop = svg.append('g')
.attr('class', 'percent-wheel');
loop.append('path')
.attr('class', 'background')
.attr('d', arc.endAngle(2 * Math.PI));
以下是翻译后的内容:
这里是生成的 SVG 标记,当静态插入到 DOM 中时会正确缩放:
<div id="d3" class="container">
<svg preserveAspectRatio="xMidYMid" viewbox="0, 0, 100, 100" height="100%" width="100%">
<g transform="translate(50, 50)">
<g class="percent-wheel">
<path d="M0,48A48,48 0 1,1 0,-48A48,48 0 1,1 0,48M0,36A36,36 0 1,0 0,-36A36,36 0 1,0 0,36Z" class="background"></path>
</g>
</g>
</svg>
</div>
您可以在这里看到一个实时示例: http://jsfiddle.net/HMQGq/
有人能解释一下用d3创建的svg与其他方式不同的原因是什么吗?
viewBox
而不是viewbox
。 - Lars Kotthoff