zoukankan      html  css  js  c++  java
  • js The Yellow Fade Technique

    http://37signals.com/svn/archives/000558.php

    http://www.cnblogs.com/QLeelulu/archive/2008/03/25/1120854.html

    效果请将鼠标移到任意的链接上就能看到
    
    下面直接看代码:
    
    fadeUp=function(element,red,green,blue){
        if(element.fade){
            window.clearTimeout(element.fade);
        }
        var cssValue = "rgb("+red+","+green+","+blue+")";
        element.style.backgroundColor = cssValue;
        //$(element).css("background-color",cssValue);
        if(red == 255 && green == 255 && blue == 255){
            return;
        }
        var newRed = red + Math.ceil((255-red)/10);
        var newGreen = green + Math.ceil((255-green)/10);
        var newBlue = blue + Math.ceil((255-blue)/10);
        var repeat = function(){
            fadeUp(element,newRed,newGreen,newBlue);
        };
        element.fade=window.setTimeout(repeat,100);
    }
    好,我们来分析一下代码.
    背景色用 rgb(red, green, blue) 来设置. 然后用到了一个递归的调用:
    
        var repeat = function(){
            fadeUp(element,newRed,newGreen,newBlue);
        };
     
    
    递归的结果是背景色的值趋向#ffffff,也就是白色.
    递归是通过 setTimeout(function(),time) 这个函数设置延时来实现的.这个函数的意思是每隔time时间片后就执行function()函数.后面的time的单位是毫秒. 
    clearTimeout()用于清除这个延时.

    上面代码不理解可以看:http://www.cnblogs.com/youxin/archive/2012/08/28/2660443.html

    另一个:

    <!doctype html>
    <html>
    <head>
    <title>The Yellow Fade Technique in pure JavaScript</title>
    <style type="text/css">
    body {
        background-color: blue;
        color: black;
    }
    </style>
    </head>
    <body>
    <h1>The Yellow Fade Technique in pure JavaScript</h1>
    <p id="yft">Click the button to show the Yellow Fade Technique on this 
    paragraph.</p>
    <p><button>Fade</button></p>
    
    <script>
    YFT = {
        fade: function(element, startcolour, endcolour, time_elapsed) {
            var interval = 30;
            var steps = time_elapsed / interval;
            var red_change = (startcolour[0] - endcolour[0]) / steps;
            var green_change = (startcolour[1] - endcolour[1]) / steps;
            var blue_change = (startcolour[2] - endcolour[2]) / steps;
            var currentcolour = startcolour;
            var stepcount = 0;
            element.style.backgroundColor = 'rgb(' + currentcolour.toString() + ')';
            var timer = setInterval(function(){
                currentcolour[0] = parseInt(currentcolour[0] - red_change);
                currentcolour[1] = parseInt(currentcolour[1] - green_change);
                currentcolour[2] = parseInt(currentcolour[2] - blue_change);
                element.style.backgroundColor = 'rgb(' + currentcolour.toString() + ')';
                stepcount += 1;
                if (stepcount >= steps) {
                    element.style.backgroundColor = 'rgb(' + endcolour.toString() + ')';
                    clearInterval(timer);
                }
            }, interval);
        },
        click: function() {
            YFT.fade(document.getElementById("yft"), [255,255,60], [0,0,255], 750);
            return false;
        }
    }
    document.getElementsByTagName("button")[0].onclick = YFT.click;
    </script>
    
    </body>
    </html>

    演示:http://devfiles.myopera.com/articles/622/yft_pure_js.html

  • 相关阅读:
    使用iText 7读取PDF文件中的文本和图片
    登记或取消登记盈亏库存日记账行数量
    uni-app(未完)
    javaScript的基本优雅写法
    ModuleFederation-模块联邦
    typescript
    img标签src图片路径根目录问题
    开源工具分享
    软件缺陷的度量、分析和统计
    MIT6.824 2020 Lab2 A Raft Leader Election
  • 原文地址:https://www.cnblogs.com/youxin/p/2744021.html
Copyright © 2011-2022 走看看