Javascript 使用D3.js更改SVG中的变换值
我在一个SVG中有两个100个文本元素,它们来自一个外部SVG编辑器,我想使用D3.js更改它们的矩阵变换。它们的水平比例都是1.1,我想把它改为1.05,把矩阵格式变成“平移(dx,dy)旋转(θ)斜交(φ)比例(kx,ky)”。我查阅了D3API以返回转换值,但不知道如何更改它们并将其转换为新的转换形式 这是我的密码Javascript 使用D3.js更改SVG中的变换值,javascript,d3.js,svg,transform,Javascript,D3.js,Svg,Transform,我在一个SVG中有两个100个文本元素,它们来自一个外部SVG编辑器,我想使用D3.js更改它们的矩阵变换。它们的水平比例都是1.1,我想把它改为1.05,把矩阵格式变成“平移(dx,dy)旋转(θ)斜交(φ)比例(kx,ky)”。我查阅了D3API以返回转换值,但不知道如何更改它们并将其转换为新的转换形式 这是我的密码 var titles = d3.selectAll(".text-title"); for (i = 0; i < titles.length; i++) { v
var titles = d3.selectAll(".text-title");
for (i = 0; i < titles.length; i++) {
var titleTransform = d3.select(titles[i]).attr("transform");
var titleScale = d3.transform(titleTransform).scale;
//Change scale to 1.05 but keep the other transform values
}
var titles=d3.选择全部(“.text title”);
对于(i=0;i
这是我的svg
<svg>
<text transform="matrix(1.1 0 0 1 10 20)" class="text-title"> FOO </text>
<text transform="matrix(1.1 0 0 1 50 30)" class="text-title">
<tspan x="0" y="0">FOO</tspan>
<tspan x="-1.9" y="15">BAR</tspan>
</text>
<text transform="matrix(1.1 0 0 1 20 80)" class="text-title">
<tspan x="0" y="0">FOO</tspan>
<tspan x="-.2" y="15">BAR</tspan>
</text>
<text transform="matrix(1.1 0 0 1 100 30)" class="text-title"> GRUNGE BAR</text>
<text transform="matrix(1.1 0 0 1 100 50)" class="text-title">
<tspan x="0" y="0">FUNKY</tspan>
<tspan x="4.9" y="15">FOO</tspan>
</text>
</svg>
福
福
酒吧
福
酒吧
垃圾酒吧
时髦的
福
选择不是可以迭代的数组,而是对所有元素调用的each方法。在那之后,你可以做这样的事情
function foo(d, i) {
var titleTransform = d3.transform(d3.select(this).attr("transform"));
//Change scale to 1.05 but keep the other transform values
titleTransform.scale[0] = 1.05
d3.select(this).attr("transform", titleTransform);
}
var titles = d3.selectAll(".text-title").each(foo);
或者作为一个好的,谢谢,我不知道关于选择,这就是我需要的!