SVG 旋转图形实例
本实例展示如何在SVG中画出一个正方形并使之旋转。运行结果如下图所示:
在文本框中输入时间间隔,单位是毫秒。点击Start按钮,蓝色方块就会开始转动,每个时间间隔变化一度。变换的角度在下面的Angle处显示。
实现代码如下,技术要点已经详细注释。
<!DOCTYPE html> <?xml version="1.0" ?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <!-- <svg>标签声明一个svg画布长40px宽40px --> <svg width="40px" height="40px" style="border:1px solid black"> <!-- <g>标签可以包含多个图形合成一个组,并对组里的图形进行统一处理。transform="translate(20,20)"表示在<g>里的所有图形都会向下向右平移20px --> <g transform="translate(20,20)" id="myImage"> <!-- <rect>可以在画布上画出一个长方形,此长方形长宽都是20px,图形中心在(-10,-10)处,但经过<g>的变换会落在(10,10)处。颜色是蓝色 --> <rect id="mySquare" x="-10" y="-10" width="20" height="20" fill="blue" /> </g> </svg> <br/> <input id="speed" type="text" value="10" /> <button id="zoom" onclick="startAnimation();">Start</button> <p id="angle"></p> <script> var squareShape; function startAnimation() { //squareShape是要转动的那个正方形 squareShape = document.getElementById("mySquare"); //初始转角为0 squareShape.currentTheta = 0; //setInterval函数可以无限循环执行某个函数,第一个参数是要执行的函数名,第二个参数是时间间隔,单位毫秒。 setInterval("animateImage()",speed.value); } //转动正方形 function animateImage() { //正方形的transform属性是对图形进行变换,rotate(x)表示对图形旋转x度 squareShape.setAttribute("transform", "rotate(" + squareShape.currentTheta + ")"); squareShape.currentTheta += 1; //显示旋转的度数 document.getElementById("angle").innerText = "Angle:" + squareShape.currentTheta; } </script> </body> </html>
标签:
SVG
, Javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?