zoukankan      html  css  js  c++  java
  • js实现代彩色文字的下落

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>闪烁</title>
    </head>
    <style>

    *{margin:0}/* 解决兼容性问题     */
    canvas {display: block;}
    </style>
    <body>
    <canvas id="c"></canvas>

    <script>
    var c = document.getElementById("c");
    var ctx = c.getContext("2d");

    //全屏
    c.height = window.innerHeight;
    c.width = window.innerWidth;

    //文字
    var txts = "陈晓菲";
    //转为数组
    txts = txts.split("");

    var font_size = 16;
    var columns = c.width/font_size;
    //用于计算输出文字时坐标,所以长度即为列数
    var drops = [];
    //初始值
    for(var x = 0; x < columns; x++)
    drops[x] = 1;

    //输出文字
    function draw()
    {
    //让背景逐渐由透明到不透明
    ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
    ctx.fillRect(0, 0, c.width, c.height);

    ctx.fillStyle = "#0F0"; //文字颜色
    ctx.font = font_size + "px arial";
    //逐行输出文字
    for(var i = 0; i < drops.length; i++)
    {
    //随机取要输出的文字
    var text = txts[Math.floor(Math.random()*txts.length
    )];
    //输出文字,注意坐标的计算
    ctx.fillText(text, i*font_size, drops[i]*font_size);
    ctx.fillStyle = randomColor();
    //如果绘满一屏或随机数大于0.95(此数可自行调整,效果会不同)
    if(drops[i]*font_size>c.height && Math.random()>0.994)
    {
    drops[i] = 0;
    }
    //用于Y轴坐标增加
    drops[i]++;
    }
    }

    setInterval(draw, 33);
    function randomColor(){
    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+")";

    }
    </script>

    </body>
    </html>

  • 相关阅读:
    BZOJ 4408: [Fjoi 2016]神秘数
    51Nod 1317 相似字符串对
    51Nod 1561 另一种括号序列
    BZOJ 4556: [Tjoi2016&Heoi2016]字符串
    51Nod 1048 整数分解为2的幂 V2
    BZOJ 4698: Sdoi2008 Sandy的卡片
    BZOJ 3571: [Hnoi2014]画框
    BZOJ 2752: [HAOI2012]高速公路(road)
    BZOJ 1095: [ZJOI2007]Hide 捉迷藏
    BZOJ 4537: [Hnoi2016]最小公倍数
  • 原文地址:https://www.cnblogs.com/springcloud/p/8432868.html
Copyright © 2011-2022 走看看