首页 > 代码库 > MatrixBG 代码瀑布的实现

MatrixBG 代码瀑布的实现

黑客帝国中代码瀑布是怎么实现的呢?

我们可以通过 window.innerWidth获取屏幕的宽度W,并规定字符的大小size,那么屏幕中共有 W/size 列字符出现,

我们不断的去更改每一列中文字的y坐标,就可以实现文字运动的效果

没怎么学过js,但是代码还是很容易看懂的

 

技术分享
<!doctype html><html lang="en"> <head>  <meta charset="UTF-8">  <meta name="Generator" content="EditPlus®">  <meta name="Author" content="">  <meta name="Keywords" content="">  <meta name="Description" content="">  <style>    *{padding:0;margin:0}    html{overflow:hidden}  </style> </head> <body>    <canvas id="canvas" style="background:#111"></canvas>    <script type="text/javascript">                window.onload = function(){ //当页面加载时调用一下内容                        var canvas = document.getElementById("canvas");//获取画布对象                        var context =canvas.getContext("2d");//获取画布的上下文                        //获取浏览器屏幕的宽度和高度            var W = window.innerWidth;            var H = window.innerHeight;                        //设置canvas的宽度和高度            canvas.width = W;            canvas.height = H;                        var fontSize = 16;//每个文字的字体大小                        var colunms = Math.floor(W /fontSize);    //计算列                        var drops = [];//记录每列文字的y轴坐标                        for(var i=0;i<colunms;i++){//给每一个文字初始化一个起始点的位置                drops.push(0);            }                        var str ="javascript html5 canvas";//运动的文字            //4:fillText(str,x,y);原理就是去更改y的坐标位置            //绘画的函数            function draw(){                context.fillStyle = "rgba(0,0,0,0.05)";                context.fillRect(0,0,W,H);                //给字体设置样式                context.font = "700 "+fontSize+"px  微软雅黑";                //给字体添加颜色                context.fillStyle ="#00cc33";//可以rgb,hsl, 标准色,十六进制颜色                //写入画布中                for(var i=0;i<colunms;i++){                    var index = Math.floor(Math.random() * str.length);                    var x = i*fontSize;                    var y = drops[i] *fontSize;                    context.fillText(str[index],x,y);                    //如果要改变时间,肯定就是改变每次他的起点                    if(y >= canvas.height && Math.random() > 0.99){                        drops[i] = 0;                    }                    drops[i]++;                }            };            function randColor(){                var r = Math.floor(Math.random() * 256);                var g = Math.floor(Math.random() * 256);                var b = Math.floor(Math.random() * 256);                return "rgb("+r+","+g+","+b+")";            }            draw();            setInterval(draw,30);        };    </script>         </body></html>
View Code

 

MatrixBG 代码瀑布的实现