html --- SVG --- javascript --- 旋转矩形
可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),
用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。
在 Internet Explorer 10(Quirks 和 IE10 文档模式)中,矢量标记语言 (VML) 已过时。
如有疑问请参考:http://msdn.microsoft.com/zh-cn/library/ie/hh801223
更多疑问请参考:http://zh.wikipedia.org/wiki/SVG
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>旋转矩形</title>
<script>
// Global variables.
// Define SVG namespace.
var svgNS = "http://www.w3.org/2000/svg";
// Placeholder for parent SVG element to be created.
var mySvg;
// Placeholder for rectangle object to be created.
var myRect;
// Flag to stop rectangle spinning.
var spin;
// Initial angle to start rotation from.
var myAngle = 0;
// Values of center of rotation.
var myX = 250;
var myY = 150;
// Make Rectangle.
function makeRect() {
if(document.getElementsByTagNameNS(svgNS, "svg").length != 0 )
return;
/*
* createElementNS() 方法可创建带有指定命名空间的元素节点
* setAttributeNS() 方法创建或改变具有命名空间的属性
*/
// Create parent SVG element with width and height.
mySvg = document.createElementNS(svgNS,"svg");
mySvg.setAttributeNS(null,"width", "800px");
mySvg.setAttributeNS(null,"height", "450px");
// Create rectangle element from SVG namespace.
myRect = document.createElementNS(svgNS,"rect");
// Set rectangle's attributes.
myRect.setAttributeNS(null,"width","145px");
myRect.setAttributeNS(null,"height","90px");
myRect.setAttributeNS(null,"x","200px");
myRect.setAttributeNS(null,"y","100px");
myRect.setAttributeNS(null,"fill","lightcoral");
myRect.setAttributeNS(null,"stroke","deepskyblue");
myRect.setAttributeNS(null,"stroke-width","5px");
// Append rectangle to the parent SVG element.
// Append parent SVG element to the div node.
mySvg.appendChild(myRect);
document.getElementById("myAnchor").appendChild(mySvg);
}
// Do the rotation every 10 milliseconds until cancelled.
function rotateRect() {
spin = setInterval("spinRect()", 10);
}
// Spin rectangle by 5 degrees.
function spinRect() {
// Rotation is a subset of the transform attribute.
// Note the use of quotes and plus signs with variables in SVG attribute call.
myRect.setAttributeNS(null,"transform","rotate(" + myAngle + "," + myX + "," + myY + ")");
myAngle += 5;
}
</script>
</head>
<body>
<br><br>
<!-- Button to create rectangle. -->
<input type="BUTTON" value="Make Rectangle" onclick="makeRect()">
<!-- Button to rotate rectangle. -->
<input type="BUTTON" value="Rotate Rectangle" onclick="rotateRect()">
<!-- Button to close webpage with spin variable. -->
<!-- clearInterval() 方法可取消由 setInterval() 设置的 timeout。
clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。-->
<input type="BUTTON" value="Stop!" onclick="clearInterval(spin)">
<br><br>
<!-- The rectangle will be attached to the document here. -->
<div id="myAnchor"></div>
</body>
</html>
运行结果如下:

html --- SVG --- javascript --- 旋转矩形的更多相关文章
- html --- VML --- javascript --- 旋转矩形
矢量标记语言 --- Vector Markup Language 运行它的代码需要打开IE的兼容性视图 如有疑问请参考:http://msdn.microsoft.com/en-us/library ...
- cocos2d 判断旋转矩形是否包含某个点
本来想画个图演示一下,但是折腾了一会发现画不好,我的win10系统没有安装office,以后再看的话再补上吧.不废话了. 如图所以,如果判断点P是否被矩形A所包含,非常容易.那么如果矩形A以中心点逆时 ...
- css3+javascript旋转的3d盒子
今天写点css3,3d属性写的3d盒子,结合javascript让盒子随鼠标旋转起来 今天带了css3新属性3d <!DOCTYPE html> <html> <head ...
- 旋转矩形碰撞检测 OBB方向包围盒算法
在cocos2dx中进行矩形的碰撞检测时需要对旋转过的矩形做碰撞检查,由于游戏没有使用Box2D等物理引擎,所以采用了OBB(Oriented bounding box)方向包围盒算法,这个算法是基于 ...
- RotateRect(旋转矩形)的倾斜旋转变换矫正
在Opencv中的图像处理中,经常要用到minAreaRect()函数求最小外接矩形,该函数的返回值就是一个RotatedRect类对象. RotatedRect类定义如下: class CV_EXP ...
- javascript中矩形的碰撞检测---- 计算碰撞部分的面积
今天在做一个拖拽改变元素排序的东西的时候,在做被拖动元素同时碰撞到两个元素时,究竟应该与哪个元素交换位置的问题上,纠结到崩溃,实在是想不到别的办法去做了,只能去想办法计算碰撞的面积. 这应该不是最合适 ...
- opencv HSV找颜色,找轮廓用最小旋转矩形框出
#include <opencv2/opencv.hpp> #include<iostream> #include<string> using namespace ...
- SVG基础以及使用Javascript DOM操作SVG
SVG 不依赖分辨率 支持事件处理器 最适合带有大型渲染区域的应用程序(比如谷歌地图) 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快) 不适合游戏应用 Canvas 依赖分辨率 不支持事 ...
- 矩形旋转碰撞,OBB方向包围盒算法实现
怎样进行2D旋转矩形的碰撞检測.能够使用一种叫OBB的检測算法(Oriented bounding box)方向包围盒.这个算法是基于SAT(Separating Axis Theorem)分离轴定律 ...
随机推荐
- jsp中的out对象 和 servlet中的response.getOutputStream()
web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突. 即Servlet规范说明,不能既调用 respon ...
- 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统
开篇:从50开始系统已经由MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+EF6+Unity4.x+Quartz 2.3 +easyui 1.4. ...
- SQL SERVER ->> Columnstore Index
谈到Columnstore index就不得不提SQL SERVER的压缩技术了.Columnstore就是用到了SQL SERVER的压缩技术.Columnstore又分Columnstore和Co ...
- hive-0.12升级成hive 0.13.1
安装了0.12之后,听说0.13.1有许多新的特性,包括永久函数,所以想更新成0.13版的(元数据放在mysql中) 2014年8月5日实验成功 hive0.13.1的新特性 新特性详见 http:/ ...
- USACO Section 2.3: Controlling Companies
这题的dp里的check里的函数要考虑k control i control j和i control j control k的情况 /* ID: yingzho1 LANG: C++ TASK: co ...
- log log4net用代码记录日志
log4net 用代码记录日志 今天在开发项目的时候,遇到跨域调用log4net中的类,出现了一个bug,提示LogImpl未标记可序列化,此时,我靠,麻烦了,这个类又不是咱们自己的,改源码我想应该 ...
- 也谈JavaScript闭包
闭包对于很多JavaScript初学者来说,都是比较难以理解的一个概念.其实,闭包并不是那么难以掌握的,理解闭包,只需要学会3个的基本事实. 首先我们来看第一个事实,JavaScript允许当前函数引 ...
- JFreeChart 图表生成实例(饼图、柱状图、折线图、时序图)
import java.awt.BasicStroke; import java.awt.Color; import java.io.FileOutputStream; import java.io. ...
- MTK
1.mt_boot_init->boot_linux_from_storage->boot_linux->boot_linux_fdt
- leetcode:Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...