【发布时间】:2019-03-29 20:43:54
【问题描述】:
假设我有一个用 inkscape 制作的 svg。 在这个带有视图框的 SVG 集中,我想为 SVG 中的每个元素设置动画。 翻译或不透明度没有问题......但是当我需要旋转或缩放单个元素时,它表现得很奇怪。
我尝试正确理解视图框的概念,但我需要一些帮助。
我知道当我只有一个viewbox时我只有一个原点我应该设置多个viewbox吗?
<?xml version="1.0" encoding="UTF-8"?>
<svg id="SVGRoot" version="1.1" viewBox="0 0 700 500" xmlns="http://www.w3.org/2000/svg">
// rotate or scale acting weird
<ellipse id="path9238" cx="332.91" cy="143.85" rx="64.941" ry="67.676" style="fill-rule:evenodd;fill:#f00;stroke:#000"/>
// rotate or scale acting weird
<rect id="rect9240" x="400.59" y="270.31" width="173.63" height="177.73" style="fill-rule:evenodd;fill:#f00;paint-order:normal"/>
// rotate or scale acting weird
<path id="path9242" d="m233.79 453.52-153.64-138.25 196.55-63.937z" style="fill-rule:evenodd;fill:#f00;paint-order:normal"/>
</svg>
我正在使用anime.js 3.0 或CSS,或者我可以尝试其他任何东西
【问题讨论】:
-
嗯,也许我可以看看 transform-box : fill-box...
-
旋转和缩放通常需要在执行转换之前进行转换,然后再转换回来,以便被转换的对象在更改时位于原点
-
具体来说,对象应该将其中心点设置为原点......有很多方法可以做到这一点,但如果不提供动画代码,就不可能告诉你应该如何去做。
-
@Cedric Gourville 如果您想了解有关 svg 转换和技巧的详细说明,可以查看此链接 css-tricks.com/transforms-on-svg-elements
标签: javascript css svg inkscape anime.js