使用画布让鼠标更加绚丽

使用canvas让客户拥有更加舒适的体验
鼠标动态创建出彩色的小球,觉得丑的大哥们,自己复制完改改就行了,比如说你喜欢的小心心。这只是个简单的小样,要是想变得更加炫酷就需要开动你的小脑经来完善咯。
在使用时记得下载underscore,这是给新手玩的所以会存在一些兼容性问题,还存在着一些小bug,有空的时候会进行完善,第一次到csdn还是很激动的^ V ^

移动鼠标动态创建小球

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html {
            width: 100%;
            height: 100%;
        }

        body {
            width: 100%;
            height: 100%;
        }

       
    </style>
    <title>小球</title>
</head>

<body>
    <canvas id="canvas">当前浏览器版本过低,请更新浏览器</canvas>
    <script src="./underscore.js"></script>
    <script src="./jquery.min.js"></script>
    <script>
        //获取当前画布
        const canvas = document.getElementById('canvas')
        //设置画布样式
        const ctx = canvas.getContext('2d')
        canvas.width = window.innerWidth
        canvas.height = window.innerHeight
        canvas.style.background = '#000'
        
        //创建小球类
        class Ball {
            //构造器
            constructor(x, y, color) {
                this.x = x
                this.y = y

                this.color = color
                this.r = 40
            }
            //绘制小球
            render() {
                ctx.save()
                ctx.beginPath()
                ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2)
                ctx.fillStyle = this.color
                ctx.fill()
                ctx.restore()
            }
        }
        //创建会移动的小球类
        class MoveBall extends Ball {
            constructor(x, y, color) {
                super(x, y, color)
                this.dX = _.random(-5, 5)
                this.dY = _.random(-5, 5)
                this.dR = _.random(1, 3)
            }
            upDate() {
                this.x += this.dX
                this.y += this.dY
                this.r -= this.dR
                if (this.r < 0) {
                    this.r = 0
                }
            }
        }

        //实例化小球
        let ballArr = []
        let colorArr = ['red', 'yellow', 'blue', 'pink', 'green', 'orange']

        //监听鼠标移动事件
        canvas.addEventListener('mousemove', (e) => {
            // let e = e || event
            let ball = new MoveBall(e.offsetX, e.offsetY, colorArr[_.random(0, colorArr.length - 1)])
            ballArr.push(ball)
            console.log(ballArr);
        })
        //开启定时器
        setInterval(() => {
            ctx.clearRect(0, 0, canvas.width, canvas.height)
            for (let i = 0; i < ballArr.length; i++) {
                ballArr[i].render()
                ballArr[i].upDate()
            }
        }, 50)

    </script>
</body>

</html>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值