本实例展示如何在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>

最新文章

  1. 美团HD(3)-加载分类导航数据
  2. postgresql 中replace 函数
  3. 批量修改一张表格的多个sheet名
  4. 理解闭包 js回收机制
  5. 在SSIS中的不同组件间使用局部临时表
  6. go语言 类型:数组切片
  7. C#的 构造函数 和 方法重载
  8. 销傲销售过程GSP管理系统功能概述
  9. [iOS翻译]《iOS7 by Tutorials》系列:iOS7的设计精髓(下)
  10. 第三百三十五天 how can I 坚持
  11. Arctic Network
  12. C语言的本质(3)——整数的本质与运算
  13. 在VMware的Linux系统上安装Redis
  14. JS媒体查询
  15. [pycharm]远程调试服务器项目
  16. 为什么比特币和以太坊未必真得比EOS更去中心化?
  17. java内部类及四种内部类的实现方式
  18. 第四章 dubbo内核之aop源码解析
  19. Codeforces Round #247 (Div. 2) C D
  20. Microsoft Web Application Stress Tool 使用

热门文章

  1. Android Library 使用规则
  2. linux shell中&quot;2&gt;&amp;1&quot;含义
  3. “全栈2019”Java异常第十二章:catch与异常匹配
  4. Java中Io流操作-File类的常用操作-创建文件,创建文件夹
  5. 调用jdbc已经写成的方法----jdbc工具类抽取方式一
  6. MySQL , MHA , Haproxy 配置
  7. leetcode-482-License Key Formatting
  8. 架构师养成记--32.Redis高级(安全 主从复制)
  9. CentOS 7 分区方案
  10. 【CF1157F】Maximum Balanced Circle 求一个相邻元素之间绝对值为小于1的最大环