SVG 子元素上的 CSS 变换原点问题
尝试对 SVG 中的子元素进行动画处理时,该元素的变换原点通常是相对于整个 SVG 设置的,而不是相对于正在动画的特定子元素。这可能会导致意外的动画行为,例如元素似乎从 SVG 的左上角而不是其自身的中心开始缩放。
为了解决此问题,CSS 提供了 transform-box 属性,该属性可以用于定义将受变换影响的框。通过将transform-box设置为fill-box,变换将仅应用于元素的内容框(即元素可见内容占据的区域)。
考虑下面的示例,其中一个矩形SVG 中的 (id="animated-box") 使用 CSS 动画进行缩放:
@keyframes scaleBox { from { transform: scale(0); } to { transform: scale(1); } } #animated-box { animation: scaleBox 2s infinite; }
如果不设置 Transform-box 属性,矩形将从 SVG 的左上角开始缩放,如下所示它的变换原点设置为相对于整个 SVG 的 (0,0)。
要纠正此行为并使矩形从其自身中心开始缩放,请添加 transform-box: fill-box;到 #animated-box 选择器:
@keyframes scaleBox { from { transform: scale(0); } to { transform: scale(1); } } #animated-box { transform-box: fill-box; animation: scaleBox 2s infinite; }
现在,矩形将从其自身中心开始缩放,因为 Transform-box 属性确保转换仅应用于元素的内容框。这可以更好地控制动画,并实现更精确和更具视觉吸引力的结果。
以上是如何使用“transform-box: fill-box;”纠正 SVG 子元素中的意外动画行为?的详细内容。更多信息请关注PHP中文网其他相关文章!