基于前端HTML+CSS+JS实现2022城市新年贺卡特效

 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?网页要求的总数量太多?HTML网页作业无从下手?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇🏻👇🏻👇🏻

java项目精品实战案例《100套》

web前端期末大作业网页实战《100套》

  常见网页设计作业题材有 个人、 美食、 公司、体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、  文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求都能满足你的需求。原始HTML+CSS+JS页面设计, web大学生网页设计作业源码,这是一个不错的2022新年贺卡特效网页设计制作,画面精明,非常适合初学者学习使用。

动图演示:

一款超级炫酷的2022新年快乐html网页特效,霓虹的城市夜景和绚烂的烟花很是特别,该html页面还有交互效果,点击鼠标就会呈现烟花绽放的特效,唯美不过如此。图片可以换成自己喜欢的夜景或人物都可以。

主要代码:

 图片选择引入:

html, body {margin: 0;padding: 0;overflow: hidden;background: #000;font-family: Montserrat, sans-serif;background-image: url(img/pexels-photo-219692.jpeg);background-size: cover;background-position: center;}

css样式:

html, body {margin: 0;padding: 0;overflow: hidden;background: #000;font-family: Montserrat, sans-serif;background-image: url(img/pexels-photo-219692.jpeg);background-size: cover;background-position: center;}canvas {mix-blend-mode: lighten;cursor: pointer;}#hero {display: inline;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);mix-blend-mode: color-dodge;}#year {font-size: 30vw;color: #d0d0d0;font-weight: bold;}#timeleft {color: #fbfbfb;font-size: 2.5vw;text-align: center;font-family: Lora, serif;}

Javascirpt:

const canvas = document.createElement('canvas'),context = canvas.getContext('2d'),width = canvas.width = window.innerWidth,height = canvas.height = window.innerHeight,HalfPI = Math.PI / 2,gravity = vector.create(0, 0.35),year = document.getElementById('year'),timeleft = document.getElementById('timeleft'),newyear = new Date('01/01/2020');let objects = [],startFireworks = false,newYearAlready = false;function renderTimeLeft() {let date = new Date();let delta = Math.abs(newyear - date) / 1000;let hours = Math.floor(delta / 3600) % 24;delta -= hours * 3600;let minutes = Math.floor(delta / 60) % 60;delta -= minutes * 60;let seconds = Math.floor(delta % 60) + 1;let string = '';let DaysLeft = Math.floor((newyear - date) / (1000 * 60 * 60 * 24)),HoursLeft = `${hours} ${hours > 1 ? 'hours' : 'hour'}`,MinutesLeft = `${minutes} ${minutes > 1 ? 'minutes' : 'minute'}`,SecondsLeft = `${seconds} ${seconds > 1 ? 'seconds' : 'second'}`;if (hours > 0) string = `${HoursLeft} &amp; ${MinutesLeft}`;elseif (minutes > 0) string = `${MinutesLeft} &amp; ${SecondsLeft}`;elsestring = `${SecondsLeft}`;if (DaysLeft > 0) string = DaysLeft + ' days, ' + string;string += ' until 2020';timeleft.innerHTML = string;}renderTimeLeft();setInterval(function () {let date = new Date();if (date >= newyear) {if (!newYearAlready) {year.innerHTML = '2022';startFireworks = true;timeleft.innerHTML = 'Happy New Year!';}newYearAlready = true;} else renderTimeLeft();}, 500);document.body.appendChild(canvas);function random255() {return Math.floor(Math.random() * 100 + 155);}function randomColor() {let r = random255(),g = random255(),b = random255();return `rgb(${r}, ${g}, ${b})`;}class PhysicsBody {constructor() {objects.push(this);}PhysicsUpdate() {this.lastPosition = this.position.duplicate();this.position.addTo(this.velocity);this.velocity.addTo(gravity);}deleteObject() {objects[objects.indexOf(this)] = undefined;}}class firework extends PhysicsBody {constructor() {super();this.position = vector.create(Math.random() * width, height);let Velocity = vector.create(0, 0);Velocity.setLength(Math.random() * 10 + 15);Velocity.setAngle(Math.PI * 1.35 + Math.random() * Math.PI * 0.30);this.velocity = Velocity;this.trail = Math.floor(Math.random() * 4) != 1;this.trailColor = this.trail ? randomColor() : undefined;this.trailWidth = 2;this.TimeCreated = new Date().getTime();this.TimeExpired = this.TimeCreated + (Math.random() * 5 + 7) * 100;this.BlastParticleCount = Math.floor(Math.random() * 50) + 25;this.funky = Math.floor(Math.random() * 5) == 1;this.exposionColor = randomColor();}draw() {context.strokeStyle = this.trailColor;context.lineWidth = this.trailWidth;let p = this.position,lp = this.lastPosition;context.beginPath();context.moveTo(lp.getX(), lp.getY());context.lineTo(p.getX(), p.getY());context.stroke();}funkyfire() {var funky = this.funky;for (var i = 0; i < Math.floor(Math.random() * 10); i++) {new BlastParticle({ firework: this, funky });}}explode() {var funky = this.funky;for (var i = 0; i < this.BlastParticleCount; i++) {new BlastParticle({ firework: this, funky });}this.deleteObject();}checkExpire() {let now = new Date().getTime();if (now >= this.TimeExpired) this.explode();}render() {if (this.trail) this.draw();if (this.funky) this.funkyfire();this.checkExpire();}}class BlastParticle extends PhysicsBody {constructor({ firework, funky }) {super();this.position = firework.position.duplicate();let Velocity = vector.create(0, 0);if (!this.funky) {Velocity.setLength(Math.random() * 6 + 2);Velocity.setAngle(Math.random() * Math.PI * 2);} else {Velocity.setLength(Math.random() * 3 + 1);Velocity.setAngle(firework.getAngle + Math.PI / 2 - Math.PI * 0.25 + Math.PI * .5);}this.velocity = Velocity;this.color = firework.exposionColor;this.particleSize = Math.random() * 4;this.TimeCreated = new Date().getTime();this.TimeExpired = this.TimeCreated + (Math.random() * 4 + 3.5) * 100;}draw() {context.strokeStyle = this.color;context.lineWidth = this.particleSize;let p = this.position,lp = this.lastPosition;context.beginPath();context.moveTo(lp.getX(), lp.getY());context.lineTo(p.getX(), p.getY());context.stroke();}checkExpire() {let now = new Date().getTime();if (now >= this.TimeExpired) this.deleteObject();}render() {this.draw();this.checkExpire();}}document.body.addEventListener('mousedown', function (e) {let color = randomColor();for (var i = 0; i < Math.floor(Math.random() * 20) + 25; i++) {new BlastParticle({firework: {position: vector.create(e.pageX, e.pageY),velocity: vector.create(0, 0),exposionColor: color },funky: false });}});setInterval(function () {if (!startFireworks) return;for (var i = 0; i < Math.floor(Math.random() * 4); i++) {new firework();}}, 500);function cleanupObjects() {objects = objects.filter(o => o != undefined);}function loop() {context.fillStyle = 'rgba(0,0,0,0.085)';context.fillRect(0, 0, width, height);let unusedObjectCount = 0;objects.map(o => {if (!o) {unusedObjectCount++;return;}o.PhysicsUpdate();o.render();});if (unusedObjectCount > 100) cleanupObjects();requestAnimationFrame(loop);}loop();

大家点赞、收藏、关注、评论啦 、

打卡 文章 更新 180/  365天

专栏推荐阅读:

java项目精品实战案例《100套》

web前端期末大作业网页实战《100套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精心整理的10套最美Web前端新年特效---提前祝大家新年快乐(文末送书)

亲爱的小伙伴们&#xff0c;2022年春节就快到了&#xff01;~ 在这里祝各位程序员朋友2022年身体健康,代码没有bug,不用996、远离ICU。 今天给大家精心整理了10套最美前端新年特效&#xff01;提前祝大家新年快乐呀&#xff01;&#xff01;&#xff01;&#xff01; 话不多说、…

基于纯前端CSS3实现倾角瀑布流照片效果显示

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末免费获取源码&#x1f345; 临近期末, 你还在为HTM…

eclipse:web.xml<el-ignored>标签报错解决方法

问题&#xff1a;今天在整理eclipse项目的时候web.xml报错 解决方法&#xff1a;在头文件加入 http://www.springmodules.org/schema/cache/springmodules-cache.xsd 即可解决

基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 前言&#xff1a; 随着…

RSA加密:Web前端登录账户密码加密传输

一般在做系统时候对安全性要求比较高&#xff0c;现在通常选择https协议来进行数据传输。很多情况下一般的javaweb网站&#xff0c;如果安全要求不是很高的话&#xff0c;用https协议就可以了。在这种情况下&#xff0c;密码的明文传输显然是不合适的&#xff0c;因为请求如果在…

IDEA编译运行Springboot+vue项目卡死,一直building和copying resources

是因为我把node_modules也放在了resource目录下、编译的时候target文件目录过大或一直递归循环、导致卡死一直在copying resources当中&#xff0c;在IDEA中设置一下忽略node_modules文件夹即可。

基于Java+Jsp+SpringMVC漫威手办商城系统设计和实现

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你 &#x1f345;文末获取源码联系&#x1f345; 一、前言介绍&#xff1a; 随着社会的快速发展&#xff0c;…

基于Java+jquery+SpringMVC校园网站平台设计和实现

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你 &#x1f345;文末获取源码联系&#x1f345; 目录 一、前言介绍&#xff1a; 二、功能设计&#xff1…

基于Java+SpringBoot+vue+element等动物救助平台设计和实现

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你 &#x1f345;文末获取源码联系&#x1f345; &#x1f345;新星计划第三季【Java】赛道的报名入口&…

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;文末获取源码联系&#x1f345; &#x1f345;新星计划第三季【J…

IDEA: vue文件 File is read-only

今天有个同学问我是vue文件设置了什么权限吗&#xff1f;文件只读操作。 解决方法;这是因为文件主动或者被动被锁定了&#xff0c;选择相应文件&#xff0c;点击File---Make File Writable处理解决即可。

基于Java+SpringBoot+vue+element实现毕业就业招聘系统

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李阳勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;文末获取联系&#x1f345;精彩专栏推荐订阅&#x1f447;&#…

基于Java+SpringBoot+vue+element实现扶贫助农政策平台系统

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;新星计划第三季【Java】赛道的报名入口&#xff01;下一个新星就…

基于Java+SpringBoot+vue+element实现前后端分离玩具商城系统

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;文末获取源码联系&#x1f345; &#x1f345;新星计划第三季【J…

Java 结构化数据处理开源库 SPL

前言介绍&#xff1a; 现代Java应用架构越来越强调数据存储和处理分离&#xff0c;以获得更好的可维护性、可扩展性以及可移植性&#xff0c;比如火热的微服务就是一种典型。这种架构通常要求业务逻辑要在Java程序中实现&#xff0c;而不是像传统应用架构中放在数据库中。 应用…

IDEA项目 let报错爆红

用idea编写代码的时候 let报错爆红 解决方法&#xff1a;修改版本 设置后就ok了

基于Java+SpringBoot+vue+element实现汽车订票管理平台详细设计和实现

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李阳勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;文末获取源码联系&#x1f345; &#x1f345;新星计划第三季【J…

疫情期间程序员大学生居家远程办公神器--ToDesk

前言介绍&#xff1a; 最近因为疫情的原因&#xff01;为了防止疫情更大范围扩散&#xff0c;全国的疫情管控手段升级了&#xff0c;无论是工作还是部分同学们毕业设计答辩或中秋检查的时候&#xff01;一律居家办公或远程答辩毕业&#xff0c;或为他们提供远程协助服务&#x…

基于Java+SpringMvc+vue+element实现驾校管理系统详细设计

&#x1f345; 作者简介&#xff1a;CSDN特邀作者✌、博客专家✌、java领域优质创作者&#x1f4aa; &#x1f345;关注公众号【java李阳勇】 简历模板、学习资料、面试题库等都给你&#x1f4aa; &#x1f345;新星计划第三季【Java】赛道的报名入口&#xff01;下一个新星就…

IDEA:vue中缺少vue-quill-editor富文本插件

idea安装运行vue项目报错 解决方法&#xff1a;npm install vue-quill-editor --save