neilime

neilime


  • Name: [not set]
  • Favorite Languages: [not set]
  • Website: [not set]
  • Location: [not set]
  • About Me: [not set]

Recent Comments

  • Javascript Tutorial - Simple Fade Animation
    06/15/2010 - 07:12

    Here is my version, i guess i fixe 2 bugs
    n°1 : fadeIn on an element which has " filter : alpha(opacity=0)" seems doesn't work

    n°2 : fadeout on an element which contains elements which are on "position : absolute" seems doesn't work

     
    function fadeElement(sElementId, fLastTick){
            var fFadeTime = 500.0;
            var fFadeMin = 0.0;
            var fFadeMax = 1.0;
           
            var eElement = document.getElementById(sElementId);
            if(!eElement)return;
           
            var fTick = new Date().getTime();  

        if(eElement.fadeState){
            if(fLastTick)eElement.fadeTime += fTick-fLastTick;
            else{
                    eElement.fadeState = eElement.fadeState === 1 ? -1 : 1;
                    eElement.fadeTime = fFadeTime-eElement.fadeTime;
                    return true;
            }
        }
        else{
            if('undefined' !== typeof(eElement.style.opacity))eElement.fadeState = parseFloat(eElement.style.opacity) === fFadeMax ? -1 : 1;
            else{
                    if('undefined' !== typeof(eElement.style.filter)){
                            var iIeOpacity = parseFloat(eElement.style.filter.replace('alpha','').replace('opacity','').replace('=','').replace(')','').replace('(',''))/100;                      
                            eElement.fadeState = iIeOpacity === fFadeMax ? -1 : 1;
                    }
                    else return false;
            }
            eElement.fadeTime = 0.0;
        }
        var fOpacity = eElement.fadeTime/fFadeTime;
        if(eElement.fadeTime >= fFadeTime)fOpacity = 1.0;
        if(eElement.fadeState == -1)fOpacity = 1.0-fOpacity;
        fOpacity = (fFadeMax-fFadeMin)*fOpacity+fFadeMin;
        eElement.style.opacity = fOpacity;
        eElement.style.filter = 'alpha(opacity='+fOpacity*100+')';// IE
        if(eElement.children.length>0){
            for(var i=0; i<eElement.children.length;i++){
                    eElement.children[i].style.filter = 'alpha(opacity='+fOpacity*100+')';// IE
            }      
        }
        if(eElement.fadeTime >= fFadeTime)eElement.fadeState = null;
        else setTimeout("fadeElement('"+eElement.id+"',"+fTick+")", 33);
    }

    Ps : sorry for my english... i'm french