首頁 > 軟體

利用JavaScript實現繪製2023新年煙花的範例程式碼

2023-01-22 14:00:22

前言

大家過年好!新春佳節,在這個充滿喜悅的日子裡,願新年的鐘聲帶給你一份希望和期待,我相信,時空的距離不能阻隔你我,我的祝福永遠在你身邊。

祝願朋友,財源滾滾,吉祥高照,鴻運當頭,幸福環繞,萬事順心,笑口常開。

在這喜慶的日子裡,我給大家分享一個煙花程式碼,程式碼下載在使用教學部分,希望大家都能開開心心過大年!

煙花效果展示

煙花樣式可以自定義選擇,背景音樂選擇十分真實的仿煙花聲。當你把程式碼打包發給朋友開啟時,新年的氛圍在此刻達到了頂峰。也許你在這一年裡背井離鄉忙於工作,學習,也許你在這一年裡過得風生水起,做著喜歡的工作,又或是這一年裡,你過的不盡人意,新年到來之時,忘記所有煩惱,在家多陪陪父母,出門和朋友聚會,2023 年我們重頭再來!

使用教學

無論是你想自己下載研究程式碼,還是你是小白想發給朋友欣賞,都十分推薦。下面是手把手教學,帶你零基礎看一場程式碼帶來的浪漫煙花。

第一步:下載程式碼壓縮包檔案,解壓。

第二步:開啟解壓好的資料夾,此時可以看到三個檔案,如果你想試試效果,雙擊 .html 字尾的檔案在瀏覽器開啟執行即可。

第三步:如果想研究前端程式碼,我們可以看一下,資料夾中一共存放了三個檔案,分別是:

  • HTML檔案
  • CSS檔案
  • JavaScript檔案

這三個部分便是我們常說的前端三劍客,是前端的基礎內容,構成了前端技術棧。其中,HTML負責結構部分,他就像是骨架一樣,CSS 又叫層疊樣式表,負責頁面的美化,還有負責互動邏輯的 JavaScript 。

對於小白來說,網上有很多的教學,可以說是眼花繚亂。這樣的方式是不是方便很多呢?不用你新建一個記事本檔案。哈哈,重點還是能在程式碼裡學到東西哦,煙花只是為了新年的氛圍!!

檢視原始碼

HTML程式碼

由於文章的篇幅原因,程式碼只展示一部分範例。HTML 撐起了整個頁面的大致框架,不如你想給頁面加上一個按鈕,一個輸入框等等。他是頁面的骨架,負責頁面的結構部分。

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>HTML5 Canvas超逼真煙花綻放動畫</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#000000">
<link rel="shortcut icon" type="image/png" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon-v2.png" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
<link rel="icon" type="image/png" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon-v2.png" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
<link rel="apple-touch-icon-precomposed" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon-v2.png" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
<meta name="msapplication-TileColor" content="#000000">
<meta name="msapplication-TileImage" content="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon-v2.png">
<link href="https://fonts.googleapis.com/css?family=Russo+One" rel="external nofollow"  rel="stylesheet"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css" rel="external nofollow" >
<link rel="stylesheet" href="./style.css" rel="external nofollow" >

</head>
<body>

<!-- App -->
<div class="container">
	<div class="loading-init">
		<div class="loading-init__header">Loading</div>
		<div class="loading-init__status">Assembling Shells</div>
	</div>
	<div class="stage-container remove">
		<div class="canvas-container">
			<canvas id="trails-canvas"></canvas>
			<canvas id="main-canvas"></canvas>
		</div>
		<div class="controls">
			<div class="btn pause-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-pause" rel="external nofollow"  rel="external nofollow"  xlink:href="#icon-pause" rel="external nofollow"  rel="external nofollow" ></use></svg>
			</div>
			<div class="btn sound-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-sound-off" rel="external nofollow"  rel="external nofollow"  xlink:href="#icon-sound-off" rel="external nofollow"  rel="external nofollow" ></use></svg>
			</div>
			<div class="btn settings-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-settings" rel="external nofollow"  rel="external nofollow"  xlink:href="#icon-settings" rel="external nofollow"  rel="external nofollow" ></use></svg>
			</div>
		</div>
		<div class="menu hide">
			<div class="menu__inner-wrap">
				<div class="btn btn--bright close-menu-btn">
					<svg fill="white" width="24" height="24"><use href="#icon-close" rel="external nofollow"  rel="external nofollow"  xlink:href="#icon-close" rel="external nofollow"  rel="external nofollow" ></use></svg>
				</div>
				<div class="menu__header">Settings</div>
				<div class="menu__subheader">For more info, click any label.</div>
				<form>
					<div class="form-option form-option--select">
						<label class="shell-type-label">Shell Type</label>
						<select class="shell-type"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="shell-size-label">Shell Size</label>
						<select class="shell-size"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="quality-ui-label">Quality</label>
						<select class="quality-ui"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="sky-lighting-label">Sky Lighting</label>
						<select class="sky-lighting"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="scaleFactor-label">Scale</label>
						<select class="scaleFactor"></select>
					</div>
					<div class="form-option form-option--checkbox">
						<label class="auto-launch-label">Auto Fire</label>
						<input class="auto-launch" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox form-option--finale-mode">
						<label class="finale-mode-label">Finale Mode</label>
						<input class="finale-mode" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox">
						<label class="hide-controls-label">Hide Controls</label>
						<input class="hide-controls" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox form-option--fullscreen">
						<label class="fullscreen-label">Fullscreen</label>
						<input class="fullscreen" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox">
						<label class="long-exposure-label">Open Shutter</label>
						<input class="long-exposure" type="checkbox" />
					</div>
				</form>
				<div class="credits">
					Passionately built by <a href="https://cmiller.tech/" rel="external nofollow"  target="_blank">Caleb Miller</a>.
				</div>
			</div>
		</div>
	</div>
</div>
<!-- partial -->
  <script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/fscreen%401.0.1.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/Stage%400.1.4.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/MyMath.js'></script><script  src="./script.js"></script>

</body>
</html>

CSS程式碼

當然,只使用 HTML 的頁面是十分單調的,我們還需要對頁面進行美化,此時需要加入 CSS 程式碼。

.help-modal__overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  opacity: 0;
  transition-property: opacity;
  transition-timing-function: ease-in;
  transition-duration: 0.25s;
}
.help-modal__dialog {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 400px;
  max-height: calc(100vh - 100px);
  margin: 10px;
  padding: 20px;
  border-radius: 0.3em;
  background-color: rgba(0, 0, 0, 0.4);
  opacity: 0;
  transform: scale(0.9, 0.9);
  transition-property: opacity, transform;
  transition-timing-function: ease-in;
  transition-duration: 0.25s;
}

JavaScript

JavaScript 處理程式碼的互動邏輯,是十分重要的一部分,也是比較難的一部分。

function toggleSound(toggle) {
	if (typeof toggle === 'boolean') {
		store.setState({ soundEnabled: toggle });
	} else {
		store.setState({ soundEnabled: !store.state.soundEnabled });
	}
}

function toggleMenu(toggle) {
	if (typeof toggle === 'boolean') {
		store.setState({ menuOpen: toggle });
	} else {
		store.setState({ menuOpen: !store.state.menuOpen });
	}
}

function updateConfig(nextConfig) {
	nextConfig = nextConfig || getConfigFromDOM();
	store.setState({
		config: Object.assign({}, store.state.config, nextConfig)
	});
	
	configDidUpdate();
}

// Map config to various properties & apply side effects
function configDidUpdate() {
	const config = store.state.config;
	
	quality = qualitySelector();
	isLowQuality = quality === QUALITY_LOW;
	isNormalQuality = quality === QUALITY_NORMAL;
	isHighQuality = quality === QUALITY_HIGH;
	
	if (skyLightingSelector() === SKY_LIGHT_NONE) {
		appNodes.canvasContainer.style.backgroundColor = '#000';
	}
	
	Spark.drawWidth = quality === QUALITY_HIGH ? 0.75 : 1;
}

新年祝福

兔年是歲月輪迴中美麗的風景,洋溢燦爛;兔年是季節變遷中幸福的旋律,飄蕩快樂;兔年是人生歲月中溫暖的記憶,灑滿祝福。願你兔年大吉大利,萬事如意!

以上就是利用JavaScript實現繪製2023新年煙花的範例程式碼的詳細內容,更多關於JavaScript新年煙花的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com