zoukankan      html  css  js  c++  java
  • js操作keyframes动态赋值

    思路和实现方法都很简单,只是这个api很少会用到。这里记录下来。

     1 function getKeyframes(name){
     2             var animation={}
     3             var styleSheets=document.styleSheets
     4             for(var i=0;i<styleSheets.length;i++){
     5                 var item=styleSheets[i];
     6                 if(item.cssRules[0] && item.cssRules[0].name && item.cssRules[0].name==name){
     7                     animation.cssRule=item.cssRules[0];
     8                     animation.styleSheet=item;
     9                     animation.index=0;
    10                 }
    11             }
    12             return animation;
    13         }
     1 //原生js操作keyframes值
     2         var testDemo=document.getElementById('testDemo');
     3         testDemo.onclick=function(){
     4             var arr=[
     5                 {x:0,y:0},
     6                 {x:-16.91,y:-32.36},
     7                 {x:-29.76,y:-55.91},
     8                 {x:-41.19,y:-72.73},
     9                 {x:-52.00,y:-80.00},
    10                 {x:-61.38,y:-68.68},
    11                 {x:-67.30,y:-52.70},
    12                 {x:-72.79,y:-33.13},
    13                 {x:-78.12,y:-11.13},
    14                 {x:-84.00,y:12.00}
    15             ];
    16             var token = window.WebKitCSSKeyframesRule? '-webkit-':'';
    17             let key_name='testDemo'
    18             var nameRule=getKeyframes(key_name);
    19                 var rules='@'+token+'keyframes '+key_name+'{';
    20                 for(var i=0;i<arr.length;i++){
    21                     rules+=(i+1)*10+'%{transform:translate3d('+arr[i].x+'px,'+arr[i].y+'px,0);opacity:'+(i+1)*10/100+';}'
    22                 }
    23                 rules+='}';
    24             if(JSON.stringify(nameRule)=='{}'){
    25                 var sheet=document.styleSheets[0];
    26                 // console.log('````',rules);
    27                 sheet.insertRule(rules,0);
    28             }else{
    29                 nameRule.styleSheet.deleteRule(nameRule.index)
    30                 nameRule.styleSheet.insertRule(rules,nameRule.index)
    31             }
    32             testDemo.style.animation=key_name+' 2s infinite';
    33         }
  • 相关阅读:
    Material Design系列第八篇——Creating Lists and Cards
    Androidの解决自动旋转导致activity重启问题
    cnBlogs博客推荐
    yii中sphinx,Ajax搜索分页
    yii框架中应用jquery表单验证插件
    百度一键分享
    yii框架中邮箱激活(数字签名)
    yii框架中保存第三方登录信息
    yii添加行的增删改查
    yii遍历行下的每列数据(小1月考)
  • 原文地址:https://www.cnblogs.com/cm1236/p/13927280.html
Copyright © 2011-2022 走看看