有趣的HTML实例(十一) 烟花特效(css+js)

本是古典 何须时尚 2024-04-28 07:55 176阅读 0赞

为什么今天不做炒土豆丝呢,为什么呢为什么呢为什么呢为什么呢,坚持问上一个时辰,一般来说,第二天我们的饭桌上就会出现炒土豆丝。这件事告诉了我们求知欲的重要性,知之才幸福,不知不幸福。

——《华胥引》

ccdf5f588907417bb4042ccb79a9b25b.png


目录

一、前言

二、往期作品回顾

三、作品介绍

四、本期代码介绍

五、效果显示

六、编码实现

index.html

style.css

script.js

七、获取源码

公众号获取源码

获取源码?私信?关注?点赞?收藏?


一、前言

在我们的 html 学习过程中,会用到并见识到各种各样的实例,以及各种插件,并且有些 web 网页中的小插件又非常的吸引眼球,提升 web 网页的层次,显得非常好看并且非常使用。在本系列中,我将持续为大家更新有趣且使用的 html 实例,放在 web 网页中,凸显效果。

特点一:都是符合学校或者学生考试期末作业的水平,都是最基础的简单的 html 样例,提升web网页整理效果,都是 div+css 框架原创代码写的,内容包括 js / css,也包含 视频+音乐+flash 等元素的插入…

特点二:内容包括多种丰富类型,例如: 倒计时,404页面,Blog顶置卡片设计 (css+js),To-Do-List设计 (css+js),火柴盒动画 (css),日历便签设计 (css+js),搜索框设计 (css+js),卡片式图片展示 (css+js),咖啡选择 (css+js)……

可满足多种需求,欢迎大家下载!

5493b88af49745b18ffba5c1a291d069.png

#


二、往期作品回顾

有趣的HTML实例(一) 倒计时_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(二) 404页面_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(三) 加载页面动画_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(四) 旋转菜单_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(五) 加载页面动画Ⅱ(css)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(六) 卡片翻转时钟_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(七) 注册登录界面Ⅱ(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(八) 一个很有趣的动态背景(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(九) 文本变形动画(css+js)_Enovo_飞鱼的博客-CSDN博客

有趣的HTML实例(十) 悬停时有旋转效果的图标_Enovo_飞鱼的博客-CSDN博客


三、作品介绍

1.作品简介 :HTML响应式布局网站源码!兼容 pc 以及移动端,内涵 js 交互,ui 交互。直接点击即可查看效果!

2.作品编辑:个人主页网页设计题材,代码为 html+css 布局制作,作品下载后可使用任意HTML编辑软件(例如:DW、HBuilder、Vscode 、Sublime 所有编辑器均可使用)。

3.作品技术:使用DIV+CSS制作了网页背景图、鼠标经过及选中导航变色效果、下划线等。


四、本期代码介绍

一款简单的 HTML+ CSS+JS 烟花特效(css+js) 实例

1、HTML

2、CSS

3、JS

4、舒适的画面感

5、烟花特效

6、自定义文字

可通用多种不同情景,放置点击图标,进行页面跳转等


五、效果显示

656efedc24884ebd8a232f5a235be937.png

可使用在多种情景下,提升层次轮廓效果、美化界面、自定义文字的美化——>

根据需求修改


六、编码实现


显示完整代码

注意路径(⊙o⊙)?

o(* ̄▽ ̄*)ブ

index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>烟花特效</title>
  6. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/fontawesome.min.css"><link rel="stylesheet" href="./style.css">
  7. </head>
  8. <body>
  9. <!-- 文字部分 -->
  10. <canvas></canvas>
  11. <h1>202<span class="pen">3</span> 节日快乐?</h1>
  12. <!-- partial -->
  13. <script src="./script.js"></script>
  14. </body>
  15. </html>

style.css

  1. html, body {
  2. padding: 0px;
  3. margin: 0px;
  4. background: #222;
  5. font-family: 'Karla', sans-serif;
  6. color: #fff;
  7. height: 100%;
  8. overflow: hidden;
  9. }
  10. h1 {
  11. z-index: 1000;
  12. position: fixed;
  13. top: 50%;
  14. left: 50%;
  15. transform: translateX(-50%) translateY(-100%);
  16. font-size: 58px;
  17. font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;
  18. border: 2px solid #fff;
  19. padding: 7.5px 15px;
  20. background: rgba(0, 0, 0, 0.5);
  21. border-radius: 3px;
  22. overflow: hidden;
  23. }
  24. span.pen {
  25. position: relative;
  26. display: inline-block;
  27. animation: drop 0.75s;
  28. }
  29. canvas {
  30. width: 100%;
  31. height: 100%;
  32. }
  33. @keyframes drop {
  34. 0% {
  35. transform: translateY(-100px);
  36. opacity: 0;
  37. }
  38. 90% {
  39. opacity: 1;
  40. transform: translateY(10px);
  41. }
  42. 100% {
  43. transform: translateY(0px);
  44. }
  45. }

script.js

  1. var ctx = document.querySelector('canvas').getContext('2d')
  2. ctx.canvas.width = window.innerWidth
  3. ctx.canvas.height = window.innerHeight
  4. var sparks = []
  5. var fireworks = []
  6. var i = 20; while(i--) {
  7. fireworks.push(
  8. new Firework(Math.random()*window.innerWidth, window.innerHeight*Math.random())
  9. )
  10. }
  11. render()
  12. function render() {
  13. setTimeout(render, 1000/60)
  14. ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
  15. ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height)
  16. for(var firework of fireworks) {
  17. if(firework.dead) continue
  18. firework.move()
  19. firework.draw()
  20. }
  21. for(var spark of sparks) {
  22. if(spark.dead) continue
  23. spark.move()
  24. spark.draw()
  25. }
  26. if(Math.random() < 0.05) {
  27. fireworks.push(new Firework())
  28. }
  29. }
  30. function Spark(x, y, color) {
  31. this.x = x
  32. this.y = y
  33. this.dir = Math.random() * (Math.PI*2)
  34. this.dead = false
  35. this.color = color
  36. this.speed = Math.random() * 3 + 3;
  37. this.walker = new Walker({ radius: 20, speed: 0.25 })
  38. this.gravity = 0.25
  39. this.dur = this.speed / 0.1
  40. this.move = function() {
  41. this.dur--
  42. if(this.dur < 0) this.dead = true
  43. if(this.speed < 0) return
  44. if(this.speed > 0) this.speed -= 0.1
  45. var walk = this.walker.step()
  46. this.x += Math.cos(this.dir + walk) * this.speed
  47. this.y += Math.sin(this.dir + walk) * this.speed
  48. this.y += this.gravity
  49. this.gravity += 0.05
  50. }
  51. this.draw = function() {
  52. drawCircle(this.x, this.y, 3, this.color)
  53. }
  54. }
  55. function Firework(x, y) {
  56. this.xmove = new Walker({radius: 10, speed: 0.5})
  57. this.x = x || Math.random() * ctx.canvas.width
  58. this.y = y || ctx.canvas.height
  59. this.height = Math.random()*ctx.canvas.height/2
  60. this.dead = false
  61. this.color = randomColor()
  62. this.move = function() {
  63. this.x += this.xmove.step()
  64. if(this.y > this.height) this.y -= 1;
  65. else this.burst()
  66. }
  67. this.draw = function() {
  68. drawCircle(this.x, this.y, 1, this.color)
  69. }
  70. this.burst = function() {
  71. this.dead = true
  72. var i = 100; while(i--) sparks.push(new Spark(this.x, this.y, this.color))
  73. }
  74. }
  75. function drawCircle(x, y, radius, color) {
  76. color = color || '#FFF'
  77. ctx.fillStyle = color
  78. ctx.fillRect(x-radius/2, y-radius/2, radius, radius)
  79. }
  80. function randomColor(){
  81. return ['#93c47d','#a4c2f4','#b4a7d6','#c27ba0','#f6b26b', '#ffd966'][Math.floor(Math.random() * 6)];
  82. }
  83. function Walker(options){
  84. this.step = function(){
  85. this.direction = Math.sign(this.target) * this.speed
  86. this.value += this.direction
  87. this.target
  88. ? this.target -= this.direction
  89. : (this.value)
  90. ? (this.wander)
  91. ? this.target = this.newTarget()
  92. : this.target = -this.value
  93. : this.target = this.newTarget()
  94. return this.direction
  95. }
  96. this.newTarget = function() {
  97. return Math.round(Math.random()*(this.radius*2)-this.radius)
  98. }
  99. this.start = 0
  100. this.value = 0
  101. this.radius = options.radius
  102. this.target = this.newTarget()
  103. this.direction = Math.sign(this.target)
  104. this.wander = options.wander
  105. this.speed = options.speed || 1
  106. }

七、获取源码

老规矩,先给朋友们看一下完整文件夹,

正确的文件如下图 ,复制源码的朋友们请注意了!!!

8c97b1198c3e4e618b64ada4c7d840fb.png

公众号获取源码

第一步,通过微信公众号下载源码压缩包,解压并打开文件夹,即为上图样式(复制源码请注意路径及文件名)

第二步,点击 html 文件 打开即可查看


2023年第二十一期,希望得到大家的喜欢?

也是新的系列,将会持续更新,?

希望大家有好的意见或者建议,欢迎私信


以上就是本篇文章的全部内容了

~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !

获取源码?私信?关注?点赞?收藏?

?+✏️+⭐️+?

有需要源码的小伙伴可以 关注下方微信公众号 “ Enovo开发工厂 “,回复 关键词 “ a-yh1 “

发表评论

表情:
评论列表 (有 0 条评论,176人围观)

还没有评论,来说两句吧...

相关阅读

    相关 canvas实现烟花特效

    > 看过我之前博客的人一定都知道我对canvas赞不绝口,没看过?那就看看下面这篇吧,总结一下对canvas的使用心得就是盘它! 实现效果: ![2019022310275