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、

 

转载于:https://www.cnblogs.com/h5skill/p/8431729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值