Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用D3.js更改SVG中的变换值_Javascript_D3.js_Svg_Transform - Fatal编程技术网

Javascript 使用D3.js更改SVG中的变换值

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

我在一个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++) {
  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);

或者作为一个

好的,谢谢,我不知道关于选择,这就是我需要的!