Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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 旋转后缩放会更改rect元素的位置_Javascript_Svg_Transform - Fatal编程技术网

Javascript 旋转后缩放会更改rect元素的位置

Javascript 旋转后缩放会更改rect元素的位置,javascript,svg,transform,Javascript,Svg,Transform,原始rect,带旋转: 缩放后,旋转中心将根据新的bbox: 缩放rect后,如果我们更新旋转中心,则rect的位置将更改。但是,如果我们不更新中心,那么它将按预期工作,直到应用其他转换。 在更新宽度和高度时缩放,而不是缩放变换 我的问题是如何保持元素的位置不变 如果单击缩放-无更新位置不会改变,但单击缩放-更新位置会改变 函数scaleAndUpdate(id,更新){ 变量 elem=document.getElementById(id), bbox,cx,cy; 元素setAttr

原始
rect
,带旋转:

缩放后,旋转中心将根据新的
bbox

缩放
rect
后,如果我们更新旋转中心,则
rect
的位置将更改。但是,如果我们不更新中心,那么它将按预期工作,直到应用其他转换。 在更新宽度和高度时缩放,而不是缩放变换

我的问题是如何保持元素的位置不变


如果单击
缩放-无更新
位置不会改变,但单击
缩放-更新
位置会改变

函数scaleAndUpdate(id,更新){
变量
elem=document.getElementById(id),
bbox,cx,cy;
元素setAttribute('width',200);
元素setAttribute('height',200);
如果(更新){
bbox=elem.getBBox();
cx=bbox.x+(bbox.width/2);
cy=bbox.y+(bbox.height/2);
元素setAttribute('transform','rotate(45',+cx+','+cy+'));
}
}
功能重置(id){
变量
elem=document.getElementById(id);
元素setAttribute('x',40);
元素setAttribute('y',40);
元素setAttribute('width',100);
元素setAttribute('height',100);
元素setAttribute('transform','rotate(45,90,90');
}

比例-无更新
规模-更新
重置