首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SVG中设置变换原点

如何在SVG中设置变换原点
EN

Stack Overflow用户
提问于 2011-07-16 02:29:28
回答 7查看 108.4K关注 0票数 115

我需要使用javascript调整和旋转SVG文档中的某些元素。问题是,默认情况下,它总是在(0, 0) -左上角的原点周围应用变换。

我如何重新定义这个变换锚点?

我尝试使用transform-origin属性,但它不会影响任何内容。

我是这样做的:

代码语言:javascript
复制
svg.getDocumentById('someId').setAttribute('transform-origin', '75 240');

它似乎没有将轴心点设置为我指定的点,尽管我可以在Firefox中看到该属性已正确设置。我尝试了像center bottom50% 100%这样的东西,带括号和不带括号。到目前为止,一切都不起作用。

有人能帮上忙吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-07-16 07:16:58

若要旋转,请使用transform="rotate(deg, cx, cy)",其中deg是要旋转的度数,(cx,cy)定义旋转中心。

对于缩放/调整大小,您必须平移(-cx,-cy),然后缩放,然后平移回(cx,cy)。您可以使用matrix transform来实现这一点

代码语言:javascript
复制
transform="matrix(sx, 0, 0, sy, cx-sx*cx, cy-sy*cy)"

其中sx是x轴上的比例因子,sy是y轴上的比例因子。

票数 159
EN

Stack Overflow用户

发布于 2020-07-04 01:23:45

代码语言:javascript
复制
svg * { 
  transform-box: fill-box;
}

应用transform-box: fill-box将使SVG中的元素表现为普通的HTML元素。然后,您可以像往常一样应用transform-origin: center (或其他东西

没错,transform-box: fill-box。如今,不再需要任何复杂的矩阵内容

票数 51
EN

Stack Overflow用户

发布于 2015-09-02 01:53:49

如果可以使用固定值(不是"center“或"50%"),则可以使用CSS:

代码语言:javascript
复制
-moz-transform-origin: 25px 25px;
-ms-transform-origin:  25px 25px;
-o-transform-origin: 25px 25px;
-webkit-transform-origin:  25px 25px;
transform-origin: 25px 25px;

一些浏览器(如Firefox)不能正确处理相对值。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6711610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档