如何使用JavaScript实现新年贺卡特效
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下如何使用JavaScript实现新年贺卡特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!动图演示一款超级炫酷的2022新年快乐html网页特效,霓虹的城市夜景和绚
千家信息网最后更新 2025年01月18日如何使用JavaScript实现新年贺卡特效
小编给大家分享一下如何使用JavaScript实现新年贺卡特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
动图演示
一款超级炫酷的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} & ${MinutesLeft}`;else if (minutes > 0) string = `${MinutesLeft} & ${SecondsLeft}`;else string = `${SecondsLeft}`; if (DaysLeft > 0) string = DaysLeft + ' days, ' + string; string += ' until 2020'; timeleft[xss_clean] = string; } renderTimeLeft(); setInterval(function () { let date = new Date(); if (date >= newyear) { if (!newYearAlready) { year[xss_clean] = '2022'; startFireworks = true; timeleft[xss_clean] = '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();
javascript是一种什么语言
javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言。它主要用来给HTML网页添加动态功能,现在JavaScript也可被用于网络服务器,如Node.js。
看完了这篇文章,相信你对"如何使用JavaScript实现新年贺卡特效"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
特效
语言
网页
新年贺卡
贺卡
动态
图片
夜景
客户
客户端
烟花
篇文章
类型
脚本
开发
唯美
安全
快乐
绚烂
不过如此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
汽车网络安全就业方向及前景
网络安全使者故事
丹东市网络安全应急指挥中心
银行网络安全风险
税控盘访问数据库错误是什么情况
数据库怎么查询或语句
哪些网络技术可以入股
2017互联网网络安全
网络安全防御系统市场前景
网络安全监管平台建设方案
用数据库创建考试系统
嵌入式软件开发要求
数据库设置时长单位为秒
网络电视流媒体服务器一年多少钱
腾讯服务器一年排放多少二氧化碳
srs流媒体服务器架构
三一搅拌机数据库类型
嵌入式软件开发主要是
数据库是编程猫
佛山市升昊软件开发有限公司
修改数据库的时间
中国期刊全文收录数据库(知网)
图书整理数据库哪个最好用
quest数据库
闵行区好的软件开发怎么样
无锡物流软件开发流程
服务器可分为
excel按大于选数据库
初一网络安全观后感
数据库是编程猫