封装keyframes插件

模仿jquery,使用简单,自动添加浏览器前缀

1 var keyframes = new SHBKerframes();
2 keyframes.define([{
3     name:‘myAnimate‘,
4     0%:{width:100px;height:100px;transform:scale(1);}
5     100%:{width:100px;height:100px;transform:scale(2);}
6 }]);

源码:

 1 /**
 2 *简单的SHBKerframes
 3 *@author:索洪波
 4 *@qq:609690891
 5 *@version:1.0
 6 */
 7 /**
 8 *@SHBKerframes
 9 */
10
11 function SHBKerframes(){
12     this.prefix = ‘‘ ;
13     this.jsPrefix = ‘‘ ;
14     this.styleTag = null ;
15
16     this.init();
17     this.createStyleTag();
18 }
19 SHBKerframes.prototype.init = function(){
20     var domPrefixes = [‘webkit‘, ‘Moz‘, ‘O‘, ‘ms‘, ‘Khtml‘];
21     var style = document.body.style ;
22     if(style.animationName !== undefined) return false;
23     for(var i = 0 ;i < domPrefixes.length ; i ++){
24         if(style[domPrefixes[i]+"AnimationName"] !== undefined){
25             this.animationName = domPrefixes[i] + ‘Animation‘ ;
26             this.prefix = ‘-‘+domPrefixes[i].toLowerCase() + ‘-‘ ;
27             this.jsPrefix = domPrefixes[i] ;
28         }
29     }
30 }
31 SHBKerframes.prototype.createStyleTag = function(css){
32     var style = document.getElementById(‘SHBKeyframes‘) ;
33     if(!style){
34         style = document.createElement(‘style‘) ;
35         style.id = ‘SHBKeyframes‘ ;
36         style.type = ‘text/css‘ ;
37         document.head.appendChild(style);
38     }
39     this.styleTag = style ;
40 }
41 SHBKerframes.prototype.createKeyframes = function(keyframe){
42     var style = document.body.style ;
43     var frameName = keyframe.name ;
44     var css = "" ;
45     css = ‘@‘+this.prefix+‘keyframes ‘+frameName +"{\n" ;
46     for(var key in keyframe){
47         if(key == ‘name‘)continue;
48         css = css + key + ‘{‘ ;
49         for(var attr in keyframe[key]){
50             var jsAttr = attr.toString().replace(/-(\w)/g,function(){return arguments[1].toUpperCase();})
51             if(style[this.jsPrefix+jsAttr.charAt(0).toUpperCase()+jsAttr.substr(1)] !== undefined){
52                 css = css + this.prefix + attr + ‘:‘ + keyframe[key][attr] +‘;‘;
53             }else{
54                 css = css + attr + ‘:‘ + keyframe[key][attr] +‘;‘;
55             }
56         }
57         css += ‘}\n‘ ;
58     }
59     css += ‘}\n‘ ;
60     this.styleTag.appendChild(document.createTextNode(css));
61 }
62 SHBKerframes.prototype.define = function(list){
63     for(var i = 0 ; i < list.length ; i++){
64         this.createKeyframes(list[i]);
65     }
66 }
时间: 2024-12-13 14:51:52

封装keyframes插件的相关文章

js封装成插件

由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件.感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了下如何封装.....虽然之前看了很多源码,但是感觉就算了解也是野路子..... 什么是封装呢? 我的理解就是 把一个功能单独做成一个组件,就像做饺子,以前做饺子必须自己先用面粉做饺子皮,再做饺子馅,然后再手工包饺子,但是现在人们发明了自动包饺子机器,虽然机器里面的每一步骤和你自己包饺子是一样的,但是

浅析vue封装自定义插件

在使用vue的过程中,经常会用到Vue.use,但是大部分对它一知半解,不了解在调用的时候具体做了什么,因此,本文简要概述下在vue中,如何封装自定义插件. 在开始之前,先补充一句,其实利用vue封装自定义插件的本质就是组件实例化的过程或者指令等公共属性方法的定义过程,比较大的区别在于封装插件需要手动干预,就是一些实例化方法需要手动调用,而Vue的实例化,很多逻辑内部已经帮忙处理掉了.插件相对于组件的优势就是插件封装好了之后,可以开箱即用,而组件是依赖于项目的.对组件初始化过程不是很熟悉的可以参

原生JS封装Ajax插件(同域&amp;&amp;jsonp跨域)

抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正确的地方,还望指正^_^ 一.Ajax核心,创建XHR对象 Ajax技术的核心是XMLHttpRequest对象(简称XHR),IE5是第一款引入XHR对象的浏览器,而IE5中的XHR对象是通过MSXML库中的一个ActiveX对象实现的,因此在IE中可能有3个版本,即MSXML2.XMLHttp.

模仿虎牙幻灯片使用面向对象思想封装的插件

虎牙是一个直播网站,很多年轻人都喜欢的网站.那天我看到虎牙的幻灯片做的挺好看的,于是就模仿着谢了一个插件,关键是它不像旋转木马幻灯片,能很好的解决偶数帧的问题,下面贴上我的源码地址:https://github.com/CuteBlackCat/huya-slider 简单介绍一下,这个幻灯片使用了jQuery库,用面向对象的方式写的一个插件.他可以随意更改图片.宽高.切换速度.是否轮播等.这个轮播图我觉得比一般的轮播图好看很多,效果也很美观.主要体现在切换的时候会让使用者觉得是由无到有的过程,

jQuery 封装、插件浅析

今天小码哥突发兴致想学习jQuery.当正在研究一个不错的插件的时候,又突然有了一个疑问,那就是为啥很多大拿前辈们在封装自己写的插件的时候总是按照这个格式:如;(function($){})(jQuery);.或者是这样定义方法对象的?如:$.fn.add=function(){}啥的!!尤其是后一个$.fn中的fn是干什么的?(大家不要笑俺,,,小码哥也是初学者,还有很多没有达到深刻理解的境界.)因此,偶就上网借鉴了一下别人总结的,然后又加上俺自己的理解,成就了一下的一片博文! 大家都晓得,j

封装jQuery插件实现TAB切换

先上效果图: 直接上代码: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <script src='jquery.js'></script> <script src='tab.js'></script> &l

vue 封装一个插件

1.创建一个vue组件button/button.vue <template> <div class="btn" :style="{'background':color,'color':fontColor}"> {{text}} </div> </template> <script> export default { name:"button", //配置项 props:{ text:{

【cocos2d-x 手游研发小技巧(17)封装动画插件,序列帧 plist+png】

今天是2014年的最后一天  明天就是2015年了 今天给大家一点干活 我就直接上代码了 #ifndef __ENTITY_ACTION_H__ #define __ENTITY_ACTION_H__ #include "cocos2d.h" #include "cocos-ext.h" #include "game/entity/UISprite.h" class EntityAction : public CCNode { public: E

用jQuery写的一个翻页,并封装为插件,

1 *{ 2 margin:0; 3 padding: 0; 4 list-style: none; 5 text-decoration: none; 6 } 7 .page{ 8 width:500px; 9 margin:100px auto; 10 color: #ccc; 11 } 12 .page a{ 13 display: inline-block; 14 color: #428bca; 15 height: 25px; 16 line-height: 25px; 17 paddi