• 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         }
  • 相关阅读:
    Shell与if相关参数
    Linux盘符漂移问题
    shell脚本,每5个字符之间插入"|",行末不插入“|”
    paste:linux合并两个文件中的列(左右合并)
    关于bc 的scale .
    RxJS与观察者模式
    什么是虚拟DOM
    JS设计模式
    JS自定义事件
    原生js实现拖拽功能
  • 原文地址:https://www.cnblogs.com/cm1236/p/13927280.html
Copyright © 2020-2023  润新知