js画布实现下雪效果

之前使用css实现了下雪效果,也对比了前端多种实现动画的方法(链接见文末)
下面使用js和canvas的方法配合requestAnimationFrame实现一个简单的下雪效果,代码十分精简。

代码

<body style="margin: 0;">
  <canvas id="cvs" style="background-color: black"></canvas>
</body>
<script>
  const cvs = document.querySelector('#cvs')
  const ctx = cvs.getContext('2d')
  // 全屏黑夜
  const { clientWidth: width, clientHeight: height } = document.documentElement
  cvs.width = width
  cvs.height = height
  ctx.fillStyle = '#ffffff'

  // 雪球位置
  const bgColors = Array.from(new Array(400)).map(v => {
    return {
      x: Math.random() * width,
      y: Math.random() * height,
      step: Math.random() * 2 + 0.5
    }
  })

  const render = () => {
    ctx.clearRect(0, 0, width, height)
    ctx.beginPath()
    bgColors.forEach(v => {
      v.y = v.y > height ? 0 : (v.y + v.step)
      ctx.rect(v.x, v.y, 3, 3)
    })
    ctx.fill()
    requestAnimationFrame(render)
  }

  render()
</script>

效果:

(因为不会截取gif动图)
在这里插入图片描述
搞了个收费的gif。。凑合看
在这里插入图片描述

相关文章

css方法实现下雪、下雨、落叶效果:
https://blog.csdn.net/qq_37669585/article/details/122185182?spm=1001.2014.3001.5501
requestAnimationFrame、前端动画实现方式总结与优化(大全):
https://blog.csdn.net/qq_37669585/article/details/127488681?spm=1001.2014.3001.5501

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值