animation - 移动形状时未正确应用 SVG 动画
问题描述
我正在尝试将 SVG 动画应用于移动 (100, 100) 像素的三角形:
<svg width="800" height="600">
<polyline shapeId="triangle" fill="transparent" stroke="gray" points="0,0 52.5,160 105,0 0,0 " transform=" translate(100 100)">
</polyline>
</svg>
我期待三角形围绕点(100、100)旋转。但是,三角形围绕 SVG 文档的原点旋转:
<svg width="800" height="600">
<polyline shapeId="triangle" fill="transparent" stroke="gray" points="0,0 52.5,160 105,0 0,0 " transform=" translate(100 100)">
<animateTransform attributeName="transform" type="rotate" begin="0s" dur="5s" repeatCount="indefinite" from="0" to="360"/>
</polyline>
</svg>
如果我在动画标签中指定旋转偏移,结果仍然不是我所期望的:三角形不会围绕它的一个角旋转。
<svg width="800" height="600">
<polyline shapeId="triangle" fill="transparent" stroke="gray" points="0,0 52.5,160 105,0 0,0 " transform=" translate(100 100)">
<animateTransform attributeName="transform" type="rotate" begin="0s" dur="5s" repeatCount="indefinite" from="0 100 100" to="360 100 100"/>
</polyline>
</svg>
我想要实现的是在移动 (100, 100) 像素时围绕其中一个角旋转的三角形。
我怎样才能做到这一点?谢谢你。
解决方案
你总是可以转换一个父元素......
<svg width="800" height="600">
<g transform="translate(100 100)">
<polyline shapeId="triangle" fill="transparent" stroke="gray" points="0,0 52.5,160 105,0 0,0 " >
<animateTransform attributeName="transform" type="rotate" begin="0s" dur="5s" repeatCount="indefinite" from="0" to="360"/>
</polyline>
</g>
</svg>
推荐阅读
- python - 团队中所有路径中 url 的共同起点
- mysql - MySQL 5.7 使用 CURRENT_TIMESTAMP 不工作
- c - 如何以相反的顺序打印二维字符串数组
- javascript - 通过 FTP 在 Node 和 AWS Lambda 中使用 Async 和 Promises 下载 txt 文件
- mysql - 如何使用另一个表中的键和值从一个表中加入行
- protobuf-net - 使用 Protogen 2.3.17 命令行生成 C# 文件
- spark-structured-streaming - Spark结构化流聚合输出间隔
- python-3.x - 带有 Flask 运行时错误的 Python 3:“AttributeError: module 'hmac' has no attribute 'digest'”在 Linux 但不是 Windows
- node.js - 服务器和客户端上的不同元标记是否重要?反应 SSR
- sql-server - 如何为字符串中两个分隔符之间的每个字符生成单独的行