当前位置:   article > 正文

最好看的代码雨特效_html特效代码雨代码

html特效代码雨代码

上代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <title>代码雨</title>
  8. <style>
  9. * {
  10. padding: 0;
  11. margin: 0;
  12. }
  13. body {
  14. overflow: hidden;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <canvas id="rain" style="background-image: linear-gradient(blue,red,yellow)"></canvas>
  20. <script>
  21. <!DOCTYPE html>
  22. <html lang="en">
  23. <head>
  24. <meta charset="UTF-8">
  25. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  26. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  27. <title>代码雨</title>
  28. </head>
  29. <body>
  30. <canvas id="rain" style="background-image: linear-gradient(blue, black, red);"></canvas>
  31. </body>
  32. <script>
  33. class CodeRain {
  34. constructor(canvas, width, height, fontSize) {
  35. this.fontSize = fontSize
  36. // 保存画布为类变量,方便使用
  37. this.canvas = canvas
  38. this.canvas.width = width
  39. this.canvas.height = height
  40. // 拿到画笔
  41. this.pencel = canvas.getContext("2d")
  42. // 画布的宽
  43. this.width = width
  44. // 画布的高
  45. this.height = height
  46. // 计算列数
  47. const columnsNum = Math.floor(width / fontSize)
  48. // 初始化数组长度
  49. this.drops = new Array(columnsNum)
  50. // 设置数组的初始值
  51. this.drops.fill(1)
  52. }
  53. // 获取随机字符
  54. getRandomStr() {
  55. return Math.random().toString(36).slice(12).substr(0, 1)
  56. }
  57. // 获取随机颜色
  58. getRandomColor() {
  59. const r = Math.floor(Math.random() * 256)
  60. const g = Math.floor(Math.random() * 256)
  61. const b = Math.floor(Math.random() * 256)
  62. return `rgb(${r},${g},${b})`
  63. }
  64. // 鬼画符
  65. draw() {
  66. // 设置覆盖色
  67. this.pencel.fillStyle = "rgba(0,0,0,0.1)"
  68. this.pencel.fillRect(0, 0, this.width, this.height)
  69. // 设置字体样式
  70. this.pencel.font = `600 ${this.fontSize}px 微软雅黑`
  71. // 设置字体的填充颜色
  72. this.pencel.fillStyle = this.getRandomColor()
  73. // 有多少列就画多少个字符
  74. this.drops.forEach((item, index) => {
  75. // 设置x方向的坐标
  76. const x = index * this.fontSize
  77. // // 设置Y方向坐标
  78. const y = this.drops[index] * this.fontSize
  79. // // 设置需要填充的字体
  80. this.pencel.fillText(this.getRandomStr(), x, y)
  81. if (y > this.height && Math.random() > 0.99) {
  82. this.drops[index] = 0
  83. }
  84. this.drops[index]++
  85. })
  86. }
  87. }
  88. // 获取画布节点
  89. let el = document.getElementById("rain")
  90. const _w = window.innerWidth
  91. const _h = window.innerHeight
  92. // 创建画布实例,传入必要参数
  93. let codeRain = new CodeRain(el, _w, _h, 16)
  94. setInterval(() => {
  95. codeRain.draw()
  96. }, 30);
  97. </script>
  98. </html>
  99. </script>
  100. </body>
  101. </html>

写这篇文章的目的呢仅仅是为了练习以下js。离职状态长时间不写代码容易手生

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/85159
推荐阅读
相关标签