• 代码雨 html实现


    <!DOCTYPE html>



    <html>
        <head>
            <meta charset="utf-8">
            <title>王小卓雅月中愁</title>
            <style type="text/css">
                html,body{ 100%;height: 850px;}
                body{
                    background: #000;
                    overflow: hidden;
                    margin: 0;
                    padding: 0;
                }
            </style>
        </head>
        <body>
            <canvas id="cvs"></canvas>
            <script type="text/javascript">
                var cvs = document.getElementById("cvs"); 
                var ctx = cvs.getContext("2d");
                var cw = cvs.width = document.body.clientWidth;
                var ch = cvs.height = document.body.clientHeight; 
                //动画绘制对象
                var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
                var codeRainArr = []; //代码雨数组
                var cols = parseInt(cw/14); //代码雨列数
                var step = 26 ;    //步长,每一列内部数字之间的上下间隔
                ctx.font = "bold 26px microsoft yahei"; //声明字体,个人喜欢微软雅黑

    function createColorCv() {
    //画布基本颜色
    ctx.fillStyle="#242424";
    ctx.fillRect(0,0,cw,ch); 
    }

                //创建代码雨
                function createCodeRain() {
                    for (var n = 0; n < cols; n++) {
                        var col = []; 
                        //基础位置,为了列与列之间产生错位
                        var basePos = parseInt(Math.random()*300);
                        //随机速度 3~13之间
                        var speed = parseInt(Math.random()*10)+3;
                        //每组的x轴位置随机产生
                        var colx = parseInt(Math.random()*cw)

       //绿色随机
    var rgbr= 0;
    var rgbg= parseInt(Math.random()*255);
    var rgbb= 0;
    //ctx.fillStyle = "rgb("+r+','+g+','+b+")"

                        for (var i = 0; i < parseInt(ch/step)/2; i++) {
                            var code = {
                                x : colx, 
                                y : -(step*i)-basePos, 
                                speed : speed, 
    //                            text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1  //随机生成0或者1
                                text : ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","s","t","u","v","w","x","y","z"][parseInt(Math.random()*11)], //随机生成字母数组中的一个
    color : "rgb("+rgbr+','+rgbg+','+rgbb+")"
                            }
                            col.push(code);  
                        }
                        codeRainArr.push(col);
                    }
                }
                //代码雨下起来
                function codeRaining(){
                    //把画布擦干净
                    ctx.clearRect(0,0,cw,ch);
    //创建有颜色的画布
    //createColorCv();
                    for (var n = 0; n < codeRainArr.length; n++) {
                        //取出列
                        col = codeRainArr[n];
                        //遍历列,画出该列的代码
                        for (var i = 0; i < col.length; i++) {
                            var code = col[i]; 
                            if(code.y > ch){ 
                                //如果超出下边界则重置到顶部
                                code.y = 0;
                            }else{
                                //匀速降落
                                code.y += code.speed;
                            }
                            //颜色也随机变化

                            //ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)"; 

    //绿色逐渐变浅

    //ctx.fillStyle = "hsl(123,30%,"+(30-i*2)+"%)"; 


    //绿色随机
    //var r= 0;
    //var g= parseInt(Math.random()*255) + 3;
    //var b= 0;
    //ctx.fillStyle = "rgb("+r+','+g+','+b+")"
    ctx.fillStyle = code.color;
                            //把代码画出来
                            ctx.fillText(code.text,code.x,code.y);
                        }
                    }
                    requestAnimationFrame(codeRaining);
                }

                //创建代码雨
                createCodeRain();
                //开始下雨吧 GO>>
                requestAnimationFrame(codeRaining);
            </script>
        </body>
    </html>

  • 相关阅读:
    Python面向对象——内置对象的功能扩展
    学术日记#学术道德与人文素养
    Python面向对象——基本继承
    SqlServer——字符串处理函数
    SqlServer——索引
    生活小问题(1)
    win7-VS2010-IIS网站的发布问题
    PhoneGap+Cordova+SenchaTouch-01-环境搭建
    sql server数字转字符串出现科学计数法
    SQLServer 重启服务后,自增1的标识列一次增长了1000(转自博问)
  • 原文地址:https://www.cnblogs.com/wangxiaozhuo/p/10594611.html
Copyright © 2020-2023  润新知