HTML 和 JavaScript 实现飘花的效果,也不算花,就是有悬浮物飘下来,和下雪似的。
也是不需要图片和其他的 js 脚本做辅助,其实已经全写在 HTML 文件中了。
<html> <head> <title>飘花效果</title> </head> <body> <canvas id="christmasCanvas" style="top: 0px; left: 0px; z-index: 5000; position: fixed; pointer-events: none;"></canvas> <script> var snow = function () { var b = document.getElementById("christmasCanvas"), a = b.getContext("2d"), d = window.innerWidth, c = window.innerHeight; b.width = d; b.height = c; for (var e = [], b = 0; b < 70; b++) { e.push({x: Math.random() * d, y: Math.random() * c, r: Math.random() * 4 + 1, d: Math.random() * 70}) } var h = 0; window.intervral4Christmas = setInterval(function () { a.clearRect(0, 0, d, c); a.fillStyle = "rgba(255, 255, 0, 0.6)"; a.shadowBlur = 5; a.shadowColor = "rgba(255, 255, 255, 0.9)"; a.beginPath(); for (var b = 0; b < 70; b++) { var f = e[b]; a.moveTo(f.x, f.y); a.arc(f.x, f.y, f.r, 0, Math.PI * 2, !0) } a.fill(); h += 0.01; for (b = 0; b < 70; b++) { if (f = e[b], f.y += Math.cos(h + f.d) + 1 + f.r / 2, f.x += Math.sin(h) * 2, f.x > d + 5 || f.x < -5 || f.y > c) { e[b] = b % 3 > 0 ? {x: Math.random() * d, y: -10, r: f.r, d: f.d} : Math.sin(h) > 0 ? { x: -5, y: Math.random() * c, r: f.r, d: f.d } : {x: d + 5, y: Math.random() * c, r: f.r, d: f.d} } } }, 70) } snow(); </script> </body> </html>
就是下面的效果,有黄色的小圈圈掉下来。能看清吧?