利用js动态控制animation动画

4 篇文章 0 订阅

一般我们写css3 animation动画的时候都是把它们定死在某个值不能改变,其实在js中是有相应的对象可以达到动态控制keyframes关键帧的目的

举个例子:
这里写图片描述
这个表盘效果,客户需要指针每个月根据数值做出动态变化

<div class="page page7">
    <h4 class="element p7-1">销售费用</h4>
    <p  class="hidden-text p7-deg">100</p><!--指针角度-133~133 -->
    <div class="clock">
         <div>
            <img src="images/clock1.png" class="p7-2">
            <img src="images/clock-p.png" class="p7-3 animated">
            <p class="element p7-4 animated">累计销售费用:1万元</p>
            <p class="element p7-5 animated">销售费用率:100%</p>
         </div>
    </div>
</div>

function clockfunction(page,rule){
    var rotateDeg=parseInt($('.p'+page+'-deg').text());
    var end="100% {-webkit-transform:rotate("+rotateDeg+"deg);opacity:1;}";
    var key=document.styleSheets[3].cssRules[rule];
    key.deleteRule("100%");
    key.insertRule(end);
}
...
clockfunction(7,0);

document.styleSheets[3].cssRules[0] 表示获取html中第4个样式表中的第一条规则
值得注意的是webkit浏览器是不能使用这条语句来获取外链样式表的css规则(亲测出来的)
如果要想用js控制keyframes的关键帧,就需要将-webkit-keyframes放到生产商style标签中来获取:
这里写图片描述

而在这个表盘效果的例子中,是通过clock1这个keyframes来控制的(微信专题中只需处理webkit前缀,想要兼容性更全面自行添加其他前缀)

而document.styleSheets[3].cssRules[0]就是获取clock1这个对象了

它是一个WebkitCSSKeyFramesRule对象,有三个接口,deleteRule, insertRule, findRule

WebkitCSSKeyFramesRule.deleteRule(“50%”);
WebkitCSSKeyFramesRule.findRule(“50%”);
WebkitCSSKeyFramesRule.insertRule(“50%”, “{left: 0px}”);

我的处理方式就是通过获取.p7-deg中的值来动态设置指针最终旋转角度

另外,与animation相关的还有animationEnd,animationStart和animationIteration这三个事件,分别是在元素的动画结束时,开始时,或者完成一次迭代时触发,通过监听这些事件,可以做出更多动画变化,有待后续的发现咯

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值