Yellow fade effect with JQuery

前端 未结 15 1769
萌比男神i
萌比男神i 2020-11-29 16:23

I would like to implement something similar to 37Signals\'s Yellow Fade effect.

I am using Jquery 1.3.2

The code

(function($) {
   $.fn.yell         


        
15条回答
  •  青春惊慌失措
    2020-11-29 16:46

    Actually, I have a solution that only needs jQuery 1.3x, and no aditionnal plugin.

    First, add the following functions to your script

    function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
        var delta = maxValue - minValue;
        var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
        return Math.ceil(stepp)
    }
    
    function doBGFade(elem,startRGB,endRGB,finalColor,steps,intervals,powr) {
        if (elem.bgFadeInt) window.clearInterval(elem.bgFadeInt);
        var actStep = 0;
        elem.bgFadeInt = window.setInterval(
            function() {
                elem.css("backgroundColor", "rgb("+
                    easeInOut(startRGB[0],endRGB[0],steps,actStep,powr)+","+
                    easeInOut(startRGB[1],endRGB[1],steps,actStep,powr)+","+
                    easeInOut(startRGB[2],endRGB[2],steps,actStep,powr)+")"
                );
                actStep++;
                if (actStep > steps) {
                elem.css("backgroundColor", finalColor);
                window.clearInterval(elem.bgFadeInt);
                }
            }
            ,intervals)
    }
    

    Next, call the function using this:

    doBGFade( $(selector),[245,255,159],[255,255,255],'transparent',75,20,4 );
    

    I'll let you guess the parameters, they are pretty self explanatory. To be honest the script is not from me, I took it on a page then changed it so it works with the latest jQuery.

    NB: tested on firefox 3 and ie 6 (yes it works on that old thing too)

提交回复
热议问题