Código Javascript:
Hasta ahora, la función opacity era así:Ver original
// ... getStyle : function(style){ var computedStyle; if (typeof this.currentStyle != 'undefined') computedStyle = this.currentStyle; else computedStyle = document.defaultView.getComputedStyle(this, null); return computedStyle[style]; }, opacity : function(){ var isIE = document.all, estilos = isIE ? ['filter', 100] : ['opacity', 1], valor = isIE ? ['alpha(opacity=', ')'] : ['', '']; if(arguments.length) this.style[estilos[0]] = valor[0] + (arguments[0] * estilos[1]) + valor[1]; else return P(this).getStyle('opacity'); return 1; }, entrada : function(t){ var tempo = { 'lento' : 800, 'medio' : 500, 'rapido' : 200}; var tiempo = isFinite(t)?t:tempo[t], thix = P(this), incr = 20/tiempo; thix.opacity(0); var timer = setInterval(function(){ if(thix.opacity()>=1) timer = clearInterval(timer); else{ thix.opacity(thix.opacity()+incr); } }, 20); return P(this); }, salida : function(t){ var tempo = { 'lento' : 800, 'medio' : 500, 'rapido' : 200}; var tiempo = isFinite(t)?t:tempo[t], thix = P(this), incr = 20/tiempo; thix.opacity(1); var timer = setInterval(function(){ if(thix.opacity()<=0) timer = clearInterval(timer); else{ thix.opacity(thix.opacity()-incr); } }, 20); return P(this); }, // ...
Código Javascript:
Problemas:Ver original
opacity : function(){ var isIE = document.all, estilos = isIE ? ['filter', 100] : ['opacity', 1], valor = isIE ? ['alpha(opacity=', ')'] : ['', '']; if(arguments.length){ this.style[estilos[0]] = valor[0] + (arguments[0] * estilos[1]) + valor[1]; }else{ if(this.style[estilos[0]]){ return this.style[estilos[0]].match(/\d+(\.\d+)?/)[0]/estilos[1]; }else{ if(SS.find(this.tagName, estilos[0])){ return SS.find(this.tagName, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1]; }else{ if(SS.find('#'+this.id, estilos[0])) return SS.find('#'+this.id, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1]; else{ for(var i=0, partir=this.className.split(' '); clase=partir[i]; i++){ if(SS.find('.'+clase, estilos[0])) return SS.find('.'+clase, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1]; } } } } return 1; } },
En Chrome tengo un problema con el timing, porque la primera vez se ejecuta bien, pero a partir de ahí va cada vez más rápido; y además la función entrada no funciona (se queda con opacity:0 . Sólo funciona salida()). En IE directamente no funcionan ni una ni otra. ¿Qué está pasando? ¿Tanto me cambia el código la función nueva?
Saludos y gracias :D