SVG.坐标转换_使用CSS

1、ZC:对于相同的属性设置,CSS的写法 和 SVG的写法 可能是不一样的 ! ! !

  1.1、CSS3 transform 属性.html(http://www.w3school.com.cn/cssref/pr_transform.asp)(ZC:里面也有例子)

语法

transform: none|transform-functions;
描述测试
none 定义不进行转换。 测试
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。 测试
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。  
translate(x,y) 定义 2D 转换。 测试
translate3d(x,y,z) 定义 3D 转换。  
translateX(x) 定义转换,只是用 X 轴的值。 测试
translateY(y) 定义转换,只是用 Y 轴的值。 测试
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。  
scale(x,y) 定义 2D 缩放转换。 测试
scale3d(x,y,z) 定义 3D 缩放转换。  
scaleX(x) 通过设置 X 轴的值来定义缩放转换。 测试
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。 测试
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。  
rotate(angle) 定义 2D 旋转,在参数中规定角度。 测试
rotate3d(x,y,z,angle) 定义 3D 旋转。  
rotateX(angle) 定义沿着 X 轴的 3D 旋转。 测试
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。 测试
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。 测试
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。 测试
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。 测试
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。 测试
perspective(n) 为 3D 转换元素定义透视视图。 测试

 


2、测试代码(SVG文件,保存成UTF-8编码格式)

<?xml version="1.0" encoding="UTF-8"?>
<svg width="1000" height="800" viewBox="-500 -200 1000 800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cge="http://iec.ch/TC57/2005/SVG-schema#" xmlns:hzsvg="http://holleygrid.cn/svg">

    <style type="text/css">
    <![CDATA[
    <!--

    /* ZC: 下面这个样式,需要按照 CSS3的风格来写,
        不能写成SVG的风格,如写成“{transform: rotate(45deg 100px 100px);}”或“{transform: rotate(45d 100 100);}” 是不行的
    */
    .rotate01
    {
        transform: rotate(45deg);
        transform-origin: 100px 100px;
    }

    /** translate **/
    .rotate02
    {
        transform: translate(100px, 100px) rotate(45deg) translate(-100px, -100px); /* ZC:这里也同样是从后往前渲染的 */
    }

    -->
    ]]>
    </style>

    <defs/>

    <!--X轴--><line x1="-500" y1="0" x2="500" y2="0" stroke="red" stroke-width="1px" fill="none" />
    <!--Y轴--><line x1="0" y1="-200" x2="0" y2="600" stroke="red" stroke-width="1px" fill="none" />

    <rect x="100" y="100" width="200" height="100" fill="black" class="rotate01"/>

    <!--
    ZC: 写成“transform="rotate(45 100 100)"”或者“transform="rotate(45, 100 100)"”都可以,
        但是不能写成“transform="rotate(45 100 100);"”(这里,最后的位置多一个分号)
    -->
    <rect x="100" y="100" width="200" height="100" fill="blue" transform="rotate(90 100 100)"/>
    <rect x="100" y="100" width="200" height="100" fill="yellow" transform="rotate(135, 100 100)"/>
    
</svg>
<?DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"?>

 

3、

 

4、

5、

 

posted @ 2018-02-08 15:27  Html5Skill  阅读(492)  评论(0编辑  收藏  举报