封装keyframes插件
模仿jquery,使用简单,自动添加浏览器前缀
var keyframes = new SHBKerframes();
keyframes.define([{
name:'myAnimate',
0%:{width:100px;height:100px;transform:scale(1);}
100%:{width:100px;height:100px;transform:scale(2);}
}]);
源码:
/**
*简单的SHBKerframes
*@author:索洪波
*@qq:609690891
*@version:1.0
*/
/**
*@SHBKerframes
*/ function SHBKerframes(){
this.prefix = '' ;
this.jsPrefix = '' ;
this.styleTag = null ; this.init();
this.createStyleTag();
}
SHBKerframes.prototype.init = function(){
var domPrefixes = ['webkit', 'Moz', 'O', 'ms', 'Khtml'];
var style = document.body.style ;
if(style.animationName !== undefined) return false;
for(var i = 0 ;i < domPrefixes.length ; i ++){
if(style[domPrefixes[i]+"AnimationName"] !== undefined){
this.animationName = domPrefixes[i] + 'Animation' ;
this.prefix = '-'+domPrefixes[i].toLowerCase() + '-' ;
this.jsPrefix = domPrefixes[i] ;
}
}
}
SHBKerframes.prototype.createStyleTag = function(css){
var style = document.getElementById('SHBKeyframes') ;
if(!style){
style = document.createElement('style') ;
style.id = 'SHBKeyframes' ;
style.type = 'text/css' ;
document.head.appendChild(style);
}
this.styleTag = style ;
}
SHBKerframes.prototype.createKeyframes = function(keyframe){
var style = document.body.style ;
var frameName = keyframe.name ;
var css = "" ;
css = '@'+this.prefix+'keyframes '+frameName +"{\n" ;
for(var key in keyframe){
if(key == 'name')continue;
css = css + key + '{' ;
for(var attr in keyframe[key]){
var jsAttr = attr.toString().replace(/-(\w)/g,function(){return arguments[1].toUpperCase();})
if(style[this.jsPrefix+jsAttr.charAt(0).toUpperCase()+jsAttr.substr(1)] !== undefined){
css = css + this.prefix + attr + ':' + keyframe[key][attr] +';';
}else{
css = css + attr + ':' + keyframe[key][attr] +';';
}
}
css += '}\n' ;
}
css += '}\n' ;
this.styleTag.appendChild(document.createTextNode(css));
}
SHBKerframes.prototype.define = function(list){
for(var i = 0 ; i < list.length ; i++){
this.createKeyframes(list[i]);
}
}
封装keyframes插件的更多相关文章
- 封装jQuery插件的步骤
引语:jQuery提供了很多插件,我们在开发的过程使用插件能节省时间简化开发也避免从头开始编写每个组件,单我们除了懂得使用别人已编写好的插件以外,也到懂得如何封装属于我们自己的插件,以下就是封装jQu ...
- js封装成插件
由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件.感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了 ...
- 封装js插件学习指南
封装js插件学习指南 1.原生JavaScript插件编写指南 => 传送门 2.如何定义一个高逼格的原生JS插件 =>传送门 3.手把手教你用原生JavaScript造轮子 => ...
- 第一百三十八节,JavaScript,封装库--插件
JavaScript,封装库--插件 库主要是用来封装一般JavaScript的常规操作代码,而拖拽这种特效代码属于功能性代码,并不是必须的,所以这种类型的代码,我们建议另外封装,在需要的时候作为插件 ...
- 封装jquery插件
最近要到使用别的jquery插件,但部分功能并不能满足,为满足功能,只能对插件进行修改来满足,要修改插件,先要了解插件如何封装, 明白了如何封装插件,才能更好修改插件:如何封装插件? 1.插件封装类型 ...
- 浅析vue封装自定义插件
在使用vue的过程中,经常会用到Vue.use,但是大部分对它一知半解,不了解在调用的时候具体做了什么,因此,本文简要概述下在vue中,如何封装自定义插件. 在开始之前,先补充一句,其实利用vue封装 ...
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
- vue封装第三方插件并发布到npm
前言 写此文前特意google了一下,因为有较详细的开发教程我再写意义不大,有把插件封装成组件的教程,有把自己的组件封住成插件的教程,本文主要说明如何把第三方的插件封装成vue插件,简化配置,一键安装 ...
- jQuery实现轮播切换以及将其封装成插件(3)
在前两篇博文中,我们写了一个普通的轮播切换.但是我们不能每一次需要这个功能就把这些代码有重新敲一次.下面我们就将它封装成一个插件. 至于什么是插件,又为什么要封装插件,不是本文考虑的内容. 我们趁着 ...
随机推荐
- POJ 1995 Raising Modulo Numbers
快速幂取模 #include<cstdio> int mod_exp(int a, int b, int c) { int res, t; res = % c; t = a % c; wh ...
- UISwitch——开关控件
开关的可配置选项很少,一般用于处理布尔值. 下面给出一个小Demo,创建两个开关,开关一可以控制开关二的可用与否,两者的关系就相当于水闸与水龙头的关系. #import "ViewContr ...
- iOS Socket第三方开源类库 ----AsyncSocket
假如你也是一个java程序员,而你又不是很懂Socket. 下面我的这篇文章也许能帮助你一些. http://xiva.iteye.com/blog/993336 首先我们写好上面文章中的server ...
- IOS软件国际化(本地化Localizable)
IOS软件国际化(本地化Localizable) iPhone是支持语言最多的手机,它支持各国语言及中国少数名族如蒙古等语言,这也是好多少数名族都用苹果的原因.在这一点上我们自主品牌还是要多学习学习. ...
- redhat在线安装chrome浏览器
开始的时候是参考吹尽黄沙始到金的文章http://www.cnblogs.com/effective/archive/2012/03/18/2405189.html 1.创建一个文件/etc/yum. ...
- jdk1.8中的for循环
jdk1.8 从语法角度,感觉发生的变化还是蛮大的.在此记录一下. for 循环 public static void main(String[] args) { List<Animal> ...
- PHP生成带有干扰线的验证码,干扰点、字符倾斜
PHP生成验证码的类代码,本验证码类支持生成干扰点.干扰线等干扰像素,还可以使字符倾斜.在类中你可以定义验证码宽度.高度.长度.倾斜角度等参数,后附有用法: <?php class class_ ...
- Redis 排行榜 自己简单练习
<?php class Ranks{ const PREFIX = 'zhengban'; protected $redis = ''; /* 初始化 */ public function __ ...
- 9.TCP:传输控制协议
1.TCP功能 TCP向应用层提供面向连接的.可靠的字节流服务.TCP可以认为是一个没有选择确认或否认的滑动窗口协议. TCP将用户数据打包构成报文段:它发送数据后启动一个定时器:另一 ...
- 环信 之 iOS 客户端集成四:集成UI
在Podfile文件里加入 pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-cocoapods.git' 然后在终端中的 ...