教你一招实现“代码雨”


本文摘自PHP中文网,作者醉折花枝作酒筹,侵删。

本篇文章介绍一下如何实现“代码雨”。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

先看看效果

1、绿色:

2、彩色:

3、背景色:

4、绿色逐渐变浅:

源代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

<!DOCTYPE html>

<html>

    

<head>  

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">

    <title>Code -by ZhenYu.Sha</title>

    <style type="text/css">

        html, body {

            width: 100%;

            height: 100%;

        }

        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 = 16;    //步长,每一列内部数字之间的上下间隔

    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;

                }

                 

                //1 颜色也随机变化

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

 

                //2 绿色逐渐变浅

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

 

                //3 绿色随机

                // var r= 0;

                // var g= parseInt(Math.random()*255) + 3;

                // var b= 0;

                // ctx.fillStyle = "rgb("+r+','+g+','+b+")";

 

                //4 一致绿

                ctx.fillStyle = code.color;

 

 

                //把代码画出来

                ctx.fillText(code.text, code.x, code.y);

            }

        }

        requestAnimationFrame(codeRaining);

    }

 

    //创建代码雨

    createCodeRain();

    //开始下雨吧 GO>>

    requestAnimationFrame(codeRaining);

</script>

    

</body>

</html>

【推荐学习:html视频教程】

以上就是教你一招实现“代码雨”的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Html怎样使文字居中

Html的<body> 标签

Html怎么设置段距

Html进阶知识

Html方法是什么

Html表格合并单元格的方法

Html的<blockquote>标签

Html如何设置字体文字的倾斜效果?(代码详解)

input输入框只能输入数字、字母相关组合(正则表达式)

Html button标签的样式怎么设置?Html button标签的样式介绍

更多相关阅读请进入《Html》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...