SVG_8_CSS-animation_SVG-animateTransform标签_动画解析

知识点:

  •  CSS中使用animation控制动画效果;

  • SVG中使用animateTransform标签控制动画效果;

 

PS:虽然两者写法上稍微有点区别,但原理上是一致的;

 

一,先来说说CSS中的控制方法。

<style>  #svg {    width: 1500px;    height: 400px;    background: url("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3675415932,4054970339&fm=26&gp=0.jpg")  }  /*  body{background: black}*/  /* animation:name duration timing-function         delay     iteration-count             direction    动画属性  名称, 持续时长, 时间分布函数,默认为ease,延时多长时间,持续次数,默认为1次  infinite表示无限次,指定运行方向*/  /* (ease:比如从左到右,开始较慢,中间较快,末尾较慢的运动) */  /* 后面几个参数可以不指定,只需指定前两个的name和duration即可。*/  /* infinite表示执行无限次  alternate表示镜像执行,这个执行起来有循环效果,有意思 */  #cir {    animation: wjw 2s infinite alternate  }  @keyframes wjw {    0% {      transform: scale(0.5)    }    /* 50% {      transform: scale(5);      fill: aqua;    } */    100% {      transform: scale(10);      /* x:150; */      fill: rgb(73, 255, 88);    }  }</style><div id="svg">    <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewbox="0 0 500 500">      <g stroke="yellow" stroke-width="1" id="g">        <polygon points="50 0 100 0 100 100 150 100 75 150 0 100 50 100" stroke-dasharray="2 3 2"></polygon>        <text x="70" y="40" stroke-width=“10” text-anchor="center">点</text>        <text x="70" y="80" stroke-width=“10” text-anchor="center">在</text>        <text x="70" y="120" stroke-width=“10” text-anchor="center">看</text>      </g>
    </svg> </div>

animation:name duration timing-function delay iteration-count direction

各个字段含义分别是:

name--动画属性名称; 

duration--持续时长;

timing-function--时间分布函数,默认为ease;

     (ease:比如从左到右,开始较慢,中间较快,末尾较慢的运动)

delay--延时多长时间;

iteration-count--持续次数,默认为1次 infinite表示无限次

direction指定运行方向,alternate表示镜像执行,这个执行起来有循环效果,有意思。

animation动画

PS:后面几个参数可以不指定,只需指定前两个的name和duration即可。 

 

二,再来看看,直接在SVG中的animateTransform标签的用法。

代码就拿我做的“点在看”来说吧。为了使文字竖排,用了比较笨的方法,就是上下排列三个text

 

<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewbox="-200 0 300 300">  <g stroke="yellow" stroke-width="1" >    <polygon points="50 0 100 0 100 100 150 100 75 150 0 100 50 100" stroke-dasharray="2 3 2"></polygon>    <text x="75" y="25"  text-anchor="middle">点</text>    <text x="75" y="55"  text-anchor="middle">在</text>    <text x="75" y="85"  text-anchor="middle">看</text>    <animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="2s" type="scale" from="0" to="2" repeatCount="indefinite" />  </g>
</svg>

其中,最关键的是<animateTransform>这个标签,这里面定义了与CSS中animation类似的属性,可对比参考下。其中type有五种类型:rotate(旋转)、scale(缩放)、skewX(X轴方向偏移)、skewY(Y轴方向偏移)、tranlate(位移)。

用好这个aniateTransform标签,可以创造出很多意想不到的效果,后面继续。

 

想看展示效果,请移步公众号:Xi说SVG,文章同步更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值