可缩放矢量图形英语Scalable Vector GraphicsSVG)是基于可扩展标记语言(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 --- 旋转矩形的更多相关文章

  1. html --- VML --- javascript --- 旋转矩形

    矢量标记语言 --- Vector Markup Language 运行它的代码需要打开IE的兼容性视图 如有疑问请参考:http://msdn.microsoft.com/en-us/library ...

  2. cocos2d 判断旋转矩形是否包含某个点

    本来想画个图演示一下,但是折腾了一会发现画不好,我的win10系统没有安装office,以后再看的话再补上吧.不废话了. 如图所以,如果判断点P是否被矩形A所包含,非常容易.那么如果矩形A以中心点逆时 ...

  3. css3+javascript旋转的3d盒子

    今天写点css3,3d属性写的3d盒子,结合javascript让盒子随鼠标旋转起来 今天带了css3新属性3d <!DOCTYPE html> <html> <head ...

  4. 旋转矩形碰撞检测 OBB方向包围盒算法

    在cocos2dx中进行矩形的碰撞检测时需要对旋转过的矩形做碰撞检查,由于游戏没有使用Box2D等物理引擎,所以采用了OBB(Oriented bounding box)方向包围盒算法,这个算法是基于 ...

  5. RotateRect(旋转矩形)的倾斜旋转变换矫正

    在Opencv中的图像处理中,经常要用到minAreaRect()函数求最小外接矩形,该函数的返回值就是一个RotatedRect类对象. RotatedRect类定义如下: class CV_EXP ...

  6. javascript中矩形的碰撞检测---- 计算碰撞部分的面积

    今天在做一个拖拽改变元素排序的东西的时候,在做被拖动元素同时碰撞到两个元素时,究竟应该与哪个元素交换位置的问题上,纠结到崩溃,实在是想不到别的办法去做了,只能去想办法计算碰撞的面积. 这应该不是最合适 ...

  7. opencv HSV找颜色,找轮廓用最小旋转矩形框出

    #include <opencv2/opencv.hpp> #include<iostream> #include<string> using namespace ...

  8. SVG基础以及使用Javascript DOM操作SVG

    SVG 不依赖分辨率 支持事件处理器 最适合带有大型渲染区域的应用程序(比如谷歌地图) 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快) 不适合游戏应用 Canvas 依赖分辨率 不支持事 ...

  9. 矩形旋转碰撞,OBB方向包围盒算法实现

    怎样进行2D旋转矩形的碰撞检測.能够使用一种叫OBB的检測算法(Oriented bounding box)方向包围盒.这个算法是基于SAT(Separating Axis Theorem)分离轴定律 ...

随机推荐

  1. iOS:CALayer核心动画层上绘图

    在CALayer上绘图: •要在CALayer上绘图,有两种方法: 1.创建一个CALayer的子类,然后覆盖drawInContext:方法,可以使用Quartz2D API在其中进行绘图 2.设置 ...

  2. BI

    http://www.cnblogs.com/biwork/p/3276455.html http://www.cnblogs.com/biwork/p/3328879.html http://www ...

  3. Control character in cookie value, consider BASE64 encoding your value

    这是因为你给Cookie设置了中文的value,比如Cookie c = new Cookie("user", "张三");

  4. mac 下tomcat启动报错 unknown host

    解决方法:sudo scutil --set HostName localhost

  5. ACM数据结构相关资料整理【未完成,待补充】

    在网上总是查不到很系统的练ACM需要学习的数据结构资料,于是参考看过的东西,自己整理了一份. 能力有限,欢迎大家指正补充. 分类主要参考<算法竞赛入门经典训练指南>(刘汝佳),山东大学数据 ...

  6. php克隆 自动加载

    PHP加载 include() 函数 include() 函数可获得指定文件中的所有文本,并把文本拷贝到使用 include 函数的文件中. 例子 1 假设您拥有一个标准的页眉文件,名为 " ...

  7. java-基础练习题3

    [程序3] 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因 ...

  8. leetcode:Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  9. ASP.NET MVC路由配置

    一.命名参数规范+匿名对象 routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}" ...

  10. IE6下margin出现双边距

    在IE6下,块元素有浮动和横向margin的时候,横向的margin值会被放大成两倍 解决方法:添加display:inline; eg:下面的例子在IE6下会有两倍边距 <style> ...