canvas字母喷泉

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      body{
            margin: 0;
            background: #000;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <canvas></canvas>
    <script>
       
        function init(){
            var canvas=document.getElementsByTagName('canvas')[0];
            var ctx=canvas.getContext('2d');
            canvas.width=window.innerWidth
            canvas.height=window.innerHeight
            ctx.fillStyle='rgba(0,0,0,0)';
            ctx.fillRect(0,0,window.innerWidth,window.innerHeight)

            var text='ABCDEFGHIJKLMNOPQRSTUVWXYZ';

            var x=window.innerWidth/2
            var y=window.innerHeight

            var particels=[];
            var num=100;
            requestAnimationFrame(render)

            function  fade(){
                ctx.fillStyle = 'rgba(0,0,0,0.1)'
                ctx.fillRect(0,0,window.innerWidth,window.innerHeight)
            }

            function render(){
                fade()
                particels.push({x:x,y:y,color:[155,100,50,0.8],
                    font:text.charAt([Math.floor(Math.random()*26)]),
                    xSpeed:(Math.random()*20)-10,ySpeed:(Math.random()*10)-10})
                    
                for(var i=0;i<particels.length;i++){
                    var h=particels[i].color[0];
                    var s=particels[i].color[1]+'%'
                    var l=particels[i].color[2]+'%'
                    var a=particels[i].color[3];
                    var hsla=`hsla(${h},${s},${l},${a})`;
                    ctx.font='10px 微软雅黑'
                    ctx.fillStyle=hsla;
                    ctx.fillText(particels[i].font,particels[i].x,particels[i].y);
                    particels[i].x+=particels[i].xSpeed
                    particels[i].y+=particels[i].ySpeed

                    particels[i].y*=0.98
                    particels[i].color[0] += 1 // 色调
                    particels[i].color[2] *= 0.99  // 亮度
                    if( particels[i].color[0] > 253 ){
                        particels[i].color[2] = 100 // 亮度
                        particels[i].color[3] = 1 // 透明
                    }
                }
               
                clear()
                function clear(){
                    if(particels.length>num){
                        particels.shift()
                    }
                
                    
                }
                requestAnimationFrame(render)
            }


        }
       

        init()
    </script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值