【发布时间】:2019-08-01 09:00:50
【问题描述】:
我正在尝试旋转 SVG 中的路径。
因为在 SVG 中旋转的工作方式与通过 CSS 处理其他 html 元素的方式不同(即 SVG 中的默认轴是元素的左上角而不是其中心),所以我遇到了很多问题。
我需要使用它们的中心点作为轴来旋转路径。我可以通过将 transform-origin 设置为 50% 50% 来做到这一点,但是我还需要平移和缩放路径,并且更改 transform-origin 会影响翻译。
假设路径是静态大小,我可以通过在“rotate(90, x, y)”中将 x/y 包含为路径宽度/高度的一半来实现。但是,SVG 会响应缩放以适应窗口大小,因此路径的宽度/高度是动态的。 (例如'知道方法!)
我想我可能遗漏了一些非常简单的东西,但我自己却在苦苦挣扎。如何使用它们的中心作为轴来旋转这些路径 - 动态调整大小的路径?
(我也尝试将一些变换应用于父元素,但这只会导致路径裁剪)
基本问题:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2000 2000">
<g>
<path class="A" transform="translate(1000 1000) rotate(0) scale(20)" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z"/>
<path class="B" transform="translate(1000 1000) rotate(45) scale(20)" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z"/>
<path class="C" transform="translate(1000 1000) rotate(90) scale(20)" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z" d="m23.5,2 16.5,14.3-16.5,14.3v-6.8h-15v-15h15v-6.8z"/>
</g>
</svg>
我无法让 A、B 和 C 的中心共享一个 x/y 坐标,同时保持它们的平移和响应能力。
谢谢
【问题讨论】:
标签: svg