?博主:命運(yùn)之光
??專(zhuān)欄:Python星辰秘典
??專(zhuān)欄:web開(kāi)發(fā)(簡(jiǎn)單好用又好看)
??專(zhuān)欄:Java經(jīng)典程序設(shè)計(jì)
??博主的其他文章:點(diǎn)擊進(jìn)入博主的主頁(yè)
前言:歡迎踏入我的Web項(xiàng)目專(zhuān)欄,一段神奇而令人陶醉的數(shù)字世界!
??在這里,我將帶您穿越時(shí)空,揭開(kāi)屬于Web的奧秘。通過(guò)HTML、CSS和JavaScript的魔力,我創(chuàng)造了一系列令人驚嘆的Web項(xiàng)目,它們仿佛是從夢(mèng)境中涌現(xiàn)而出。
??在這個(gè)專(zhuān)欄中,您將遇到華麗的界面,如流星劃過(guò)夜空般迷人;您將感受到動(dòng)態(tài)的交互,如魔法般讓您沉浸其中;您將探索響應(yīng)式設(shè)計(jì)的玄妙,讓您的屏幕變幻出不同的絢麗景象。
??無(wú)論您是一個(gè)探險(xiǎn)家還是一位嗜血的代碼巫師,這個(gè)專(zhuān)欄將成為您的魔法書(shū)。我將分享每個(gè)項(xiàng)目的秘密,解開(kāi)編碼的謎題,讓您也能夠擁有制作奇跡的力量。
??準(zhǔn)備好了嗎?拿起您的鍵盤(pán),跟隨我的指引,一起進(jìn)入這個(gè)神秘而充滿(mǎn)驚喜的數(shù)字王國(guó)。在這里,您將找到靈感的源泉,為自己創(chuàng)造出一段奇幻的Web之旅!
目錄
簡(jiǎn)介
動(dòng)態(tài)圖展示
靜態(tài)圖展示
圖片1
圖片2
圖片3?
技術(shù)棧
創(chuàng)建Canvas
JavaScript代碼
粒子類(lèi)
煙花類(lèi)
動(dòng)畫(huà)循環(huán)
鼠標(biāo)點(diǎn)擊觸發(fā)煙花
運(yùn)行效果
項(xiàng)目完整代碼
代碼的使用方法(超簡(jiǎn)單什么都不用下載)
??1.打開(kāi)記事本?
??2.將上面的源代碼復(fù)制粘貼到記事本里面將文件另存為HTML文件點(diǎn)擊保存即可
??3.打開(kāi)html文件(大功告成(●'?'●))
結(jié)論
簡(jiǎn)介
煙花效果是一個(gè)令人著迷的動(dòng)畫(huà)特效,它給網(wǎng)頁(yè)帶來(lái)了生動(dòng)的視覺(jué)體驗(yàn)。在本文中,我們將使用HTML、CSS和JavaScript來(lái)創(chuàng)建一個(gè)簡(jiǎn)單但絢麗的煙花效果。我們將介紹粒子系統(tǒng)的概念和煙花的爆炸效果,通過(guò)調(diào)整粒子的屬性和參數(shù),使煙花效果看起來(lái)更加真實(shí)和豐富。
動(dòng)態(tài)圖展示
靜態(tài)圖展示
圖片1
圖片2
圖片3?
技術(shù)棧
在實(shí)現(xiàn)這個(gè)煙花效果中,我們將使用以下技術(shù):
-
HTML: 構(gòu)建頁(yè)面結(jié)構(gòu),添加Canvas元素。
-
CSS: 設(shè)置畫(huà)布和背景樣式。
-
JavaScript: 創(chuàng)建粒子類(lèi)、煙花類(lèi),并實(shí)現(xiàn)動(dòng)畫(huà)效果。
創(chuàng)建Canvas
首先,我們需要在HTML文件中創(chuàng)建一個(gè)Canvas元素,用于繪制煙花的效果。我們將為這個(gè)Canvas元素添加一個(gè)唯一的ID,方便在JavaScript中引用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fireworks Effect</title>
<style>
body {
margin: 0;
overflow: hidden;
background-color: black;
}
canvas {
display: block;
}
</style>
</head>
<body>
<canvas id="fireworksCanvas"></canvas>
</body>
</html>
JavaScript代碼
接下來(lái),我們使用JavaScript來(lái)實(shí)現(xiàn)煙花效果。首先,我們需要在頁(yè)面中獲取Canvas元素,并設(shè)置其寬度和高度與瀏覽器窗口一致。
const canvas = document.getElementById('fireworksCanvas');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
粒子類(lèi)
我們創(chuàng)建一個(gè)Particle
類(lèi)來(lái)表示煙花的粒子。每個(gè)粒子具有位置、顏色、半徑、速度和透明度等屬性。
class Particle {
constructor(x, y, color, velocityX, velocityY) {
this.x = x;
this.y = y;
this.color = color;
this.velocityX = velocityX;
this.velocityY = velocityY;
this.radius = 2.5;
this.opacity = 1;
}
update() {
this.x += this.velocityX;
this.y += this.velocityY;
this.velocityY += 0.1;
this.opacity -= 0.01;
}
draw(ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
ctx.fillStyle = this.color;
ctx.globalAlpha = this.opacity;
ctx.shadowBlur = 10;
ctx.shadowColor = this.color;
ctx.fill();
}
}
煙花類(lèi)
接下來(lái),我們創(chuàng)建一個(gè)Firework
類(lèi)來(lái)表示煙花本身。每朵煙花由多個(gè)粒子組成,具有初始位置和速度。我們將在煙花類(lèi)中初始化這些粒子,并在每幀中更新和繪制它們。
class Firework {
constructor(x, y) {
this.x = x;
this.y = y;
this.particles = [];
for (let i = 0; i < 50; i++) {
const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
const velocityX = (Math.random() - 0.5) * 6;
const velocityY = Math.random() * -15;
this.particles.push(new Particle(x, y, color, velocityX, velocityY));
}
}
update() {
this.particles.forEach(particle => particle.update());
}
draw(ctx) {
this.particles.forEach(particle => particle.draw(ctx));
}
}
動(dòng)畫(huà)循環(huán)
最后,我們將創(chuàng)建一個(gè)動(dòng)畫(huà)循環(huán),更新和繪制所有的煙花。
let fireworks = [];
function animate() {
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
fireworks.forEach((firework, index) => {
if (firework.particles[0].opacity <= 0) {
fireworks.splice(index, 1);
} else {
firework.update();
firework.draw(ctx);
}
});
requestAnimationFrame(animate);
}
鼠標(biāo)點(diǎn)擊觸發(fā)煙花
最后一步是添加鼠標(biāo)點(diǎn)擊事件監(jiān)聽(tīng)器,每次點(diǎn)擊鼠標(biāo)時(shí)觸發(fā)一朵煙花。
canvas.addEventListener('click', (event) => {
const x = event.clientX;
const y = event.clientY;
fireworks.push(new Firework(x, y));
});
// 啟動(dòng)動(dòng)畫(huà)
animate();
運(yùn)行效果
現(xiàn)在,打開(kāi)你的HTML文件,你應(yīng)該可以看到一個(gè)黑色的頁(yè)面。在頁(yè)面的任意位置點(diǎn)擊鼠標(biāo),你將看到一個(gè)簡(jiǎn)單但絢麗的煙花效果。
項(xiàng)目完整代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fireworks Effect</title>
<style>
body {
margin: 0;
overflow: hidden;
background-color: black;
}
canvas {
display: block;
}
</style>
</head>
<body>
<canvas id="fireworksCanvas"></canvas>
<script>
const canvas = document.getElementById('fireworksCanvas');
const ctx = canvas.getContext('2d');
let fireworks = [];
// 設(shè)置畫(huà)布大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// 監(jiān)聽(tīng)窗口大小變化
window.addEventListener('resize', () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
});
class Particle {
constructor(x, y, color, velocityX, velocityY) {
this.x = x;
this.y = y;
this.color = color;
this.velocityX = velocityX;
this.velocityY = velocityY;
this.radius = 2.5;
this.opacity = 1;
}
update() {
this.x += this.velocityX;
this.y += this.velocityY;
this.velocityY += 0.1;
this.opacity -= 0.01;
}
draw(ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
ctx.fillStyle = this.color;
ctx.globalAlpha = this.opacity;
ctx.shadowBlur = 10;
ctx.shadowColor = this.color;
ctx.fill();
}
}
class Firework {
constructor(x, y) {
this.x = x;
this.y = y;
this.particles = [];
for (let i = 0; i < 50; i++) {
const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
const velocityX = (Math.random() - 0.5) * 6;
const velocityY = Math.random() * -15;
this.particles.push(new Particle(x, y, color, velocityX, velocityY));
}
}
update() {
this.particles.forEach(particle => particle.update());
}
draw(ctx) {
this.particles.forEach(particle => particle.draw(ctx));
}
}
function animate() {
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
fireworks.forEach((firework, index) => {
if (firework.particles[0].opacity <= 0) {
fireworks.splice(index, 1);
} else {
firework.update();
firework.draw(ctx);
}
});
requestAnimationFrame(animate);
}
// 鼠標(biāo)點(diǎn)擊觸發(fā)煙花效果
canvas.addEventListener('click', (event) => {
const x = event.clientX;
const y = event.clientY;
fireworks.push(new Firework(x, y));
});
// 啟動(dòng)動(dòng)畫(huà)
animate();
</script>
</body>
</html>
代碼的使用方法(超簡(jiǎn)單什么都不用下載)
??1.打開(kāi)記事本?
??2.將上面的源代碼復(fù)制粘貼到記事本里面將文件另存為HTML文件點(diǎn)擊保存即可
??3.打開(kāi)html文件(大功告成(●'?'●))
結(jié)論
在本文中,我們介紹了如何使用HTML、CSS和JavaScript創(chuàng)建一個(gè)簡(jiǎn)單的煙花效果。我們實(shí)現(xiàn)了粒子系統(tǒng),以及煙花的爆炸效果,使得煙花效果看起來(lái)更加真實(shí)和豐富。通過(guò)調(diào)整粒子的屬性和參數(shù),你可以進(jìn)一步優(yōu)化煙花的效果,創(chuàng)造出更多種類(lèi)的煙花。
本章的內(nèi)容就到這里了,覺(jué)得對(duì)你有幫助的話(huà)就支持一下博主把~
??點(diǎn)擊下方個(gè)人名片,交流會(huì)更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓?↓ ↓ ↓ ↓ ↓ ↓ ↓文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-581342.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-581342.html
到了這里,關(guān)于??創(chuàng)意網(wǎng)頁(yè):制作一個(gè)絢麗的煙花效果(HTML、CSS和JavaScript實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!