/*
createByTommy_20110525
emial:@csslife@163.com
目的:
フェードアウトおよびその他のアニメーション効果を実行します
受信パラメーターの説明:
1最初のパラメータは、変換する必要があるオブジェクトまたは ID です。
2. 2 番目のパラメータは、以下を含むオブジェクトです。
1)、sty-> 変換されたオブジェクトで変更する必要がある属性。デフォルトは幅を変更することです (scrollTop などの非スタイル属性も渡すことができます)
2), curClass-> 変換オブジェクトの変更後に追加する必要がある現在のクラス。は空です
3)、maxVal-> 変更の最大値、デフォルトは 0 (curClass が幅や高さなどのスタイル属性の場合、非表示を意味します)、属性値が次の値になるとアニメーションを停止します。
4)、effect-> 実行されるアニメーション効果はデフォルトで outQuad になります。バウンス効果が必要な場合は、その値を 2
3 に設定します。最後のパラメータは、コールバック関数を示すオプションのパラメータです。アニメーションの完了後に実行される
*/
//animation
var ani = function(){this.init.apply(this,arguments)}
ani.prototype = {
_id:function(i){
if(!i) return;
return typeof i != "string" && i .nodeType === 1 ? i : document.getElementById(i); 🎜> },
init:function(e,s,callback){
this.e = this._id(e)
this.setInit(s||{}); maxS = parseInt(this.s.maxVal),speed = maxS==0?Math.max(this.getSty(this.e,this.s .sty),1):maxS/5; (speed,maxS,callback)
},
Formula:function(x){
var f;
switch(this.s.effect){
case 0:
f = "outQuad";
ケース 1:
f = "inQuad";
ケース 2:
> this.tween ={
outQuad: function( pos){return Math.pow(pos, 2)},//outQuad
inQuad:function(pos){return -(Math.pow((pos-1),2)-1)},/ /inQuad
bounce:function(pos){//bounce
if (pos return (7.5625 * pos * pos); else if (pos); < (2 / 2.75)) {
Return (7.5625 * (POS- = (1.5 / 2.75)) * POS.75); else if (pos & lt; (2.5 / 2.75)) {
return(7.5625 *(2.25 / 2.75) * pos .9375);;
return this.tween[f](x);
},
findAry:function(attr){
var rg = ["幅","高さ","上","下","左","右","マージン", "パディング"];
for(var z in rg){
if(rg[z]==attr) return true;
}
false を返します。
},
setInit:function(s){
this.s = {
sty:"width",
curClass:"",
maxVal:0,//効果最大值
効果:1//执行效果
}
for(i in s) this.s[i] = s[i];
},
setSty:function(x){
var attr = this.s.sty;
if(this.findAry(attr)){
this.e.style[attr] = x 'px';
var isIE6 = navigator.appVersion.indexOf("MSIE 6")>-1;
isIE6&&attr=="top"&&(this.e.style[attr] = x document.documentElement.scrollTop 'px');
}else if(attr=="opacity"){
this.s.maxVal===1&&(this.e.style.display = "block");
this.e.style.opacity = x;
this.e.style.filter = "alpha(opacity=" x*100 ")";
}else{
this.e[this.s.sty] = x
}
},
getSty:function(e,s){
var val = e. currentStyle?e.currentStyle[s]:document.defaultView.getComputedStyle(e,null)[s];
return parseInt(val)||0;
},
fun:function(f,m,callback){
var D = 日付,t = 新しい D,e,T = 500,_this = これ;
return e = setInterval(function() {
var z = Math.min(1, (new D - t) / T),
c = _this.s.curClass,
curC = _this.e.className;
_this.setSty( f (m - f) * _this.formula(z));
if (z == 1) {
if (コールバック && コールバックの種類 == '関数') callback();
_this.s.maxVal==0&&(_this.e.getAttribute("style"))&&(_this.e.style.display="none");
if (c!=""&&curC.indexOf(c)<0)_this.e.className = c;
}
},10);
}
}
これは、この js で展示されている最初の DEMO1:
[html]
銉嗐偣銉