国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景

這篇具有很好參考價(jià)值的文章主要介紹了HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、程序代碼

二、代碼原理

三、運(yùn)行效果


HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景,HTML,HTML5,Canvas,JavaScript,前端開(kāi)發(fā),Web開(kāi)發(fā),CSS樣式

一、程序代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>星空背景</title>
</head>
<body style="overflow-x:hidden;">
    <canvas id="canvas"></canvas> <!-- 創(chuàng)建一個(gè)畫布元素 -->
</body>

<script>
    // 獲取畫布元素和2D上下文
	canvas = document.getElementById('canvas');
	ctx = canvas.getContext('2d'); 
	// 設(shè)置畫布寬度和高度
	w = canvas.width = window.innerWidth;		
	h = canvas.height = window.innerHeight-50; 
	
	hue = 217; // 設(shè)定顏色
	stars = []; // 存儲(chǔ)星星的數(shù)組
	count = 0,
	maxStars = 1500; // 星星數(shù)量

    // 創(chuàng)建用于渲染星星的小畫布
	canvas2 = document.createElement('canvas');
	w2 = canvas2.width = 100;
	h2 = canvas2.height = 100;
	ctx2 = canvas2.getContext("2d");
	gradientCache = ctx2.createRadialGradient(w2 / 2, h2 / 2, 0, w2 / 2, h2 / 2, w2 / 2);
	gradientCache.addColorStop(0.025, '#fff');
	gradientCache.addColorStop(0.1, 'hsl(' + hue + ', 61%, 33%)');
	gradientCache.addColorStop(0.25, 'hsl(' + hue + ', 64%, 6%)');
	gradientCache.addColorStop(1, 'transparent');
	ctx2.fillStyle = gradientCache;
	ctx2.beginPath();
	ctx2.arc(w2 / 2, h2 / 2, w2 / 2, 0, Math.PI * 2);
	ctx2.fill();

    // 生成隨機(jī)數(shù)
	function random(min, max) {
		if (arguments.length < 2) {
			max = min;
			min = 0;
		}
		if (min > max) {
			var hold = max;
			max = min;
			min = hold;
		}
		return Math.floor(Math.random() * (max - min + 1)) + min;
	}

    // 確定星星軌道半徑
	function maxOrbit(x, y) {
		var max = Math.max(x, y), diameter = Math.round(Math.sqrt(max * max + max * max));
		return diameter / 2;
	}

    // 構(gòu)造函數(shù)用于創(chuàng)建星星對(duì)象
	Star = function() {
		this.orbitRadius = random(maxOrbit(w, h));
		this.radius = random(60, this.orbitRadius) / 10;
		this.orbitX = w / 2;
		this.orbitY = h / 2;
		this.timePassed = random(2, maxStars);	
		this.speed = random(this.orbitRadius) / 120000;
		this.alpha = random(2, 10) / 10;
		count++;
		stars[count] = this;
	}

    // 在畫布上繪制星星
	Star.prototype.draw = function() {
		x = Math.sin(this.timePassed) * this.orbitRadius + this.orbitX;
		y = Math.cos(this.timePassed) * this.orbitRadius + this.orbitY;
		twinkle = random(10);

		if (twinkle === 1 && this.alpha > 0) {
			this.alpha -= 0.05;
		} else if (twinkle === 2 && this.alpha < 1) {
			this.alpha += 0.05;
		}

		ctx.globalAlpha = this.alpha;
		ctx.drawImage(canvas2, x - this.radius / 2, y - this.radius / 2, this.radius, this.radius);
		this.timePassed += this.speed;
	}

    // 創(chuàng)建一定數(shù)量的星星對(duì)象
	for (var i = 0; i < maxStars; i++) {
		new Star();
	}

    // 開(kāi)始繪制星空背景
	function start() {
		ctx.globalCompositeOperation = 'source-over';
		ctx.globalAlpha = 1;
		ctx.fillStyle = 'hsla(' + hue + ', 64%,6%,0.2)';
		ctx.fillRect(0, 0, w, h)

		ctx.globalCompositeOperation = 'lighter';
		for (var i = 1, l = stars.length; i < l; i++) {
			stars[i].draw();
		};
		window.requestAnimationFrame(start);
	}

	start(); // 調(diào)用開(kāi)始函數(shù)
</script>
</html>

二、代碼原理

這段代碼通過(guò) HTML5 的 <canvas> 元素和 JavaScript 實(shí)現(xiàn)了一個(gè)星空背景效果。首先,它在頁(yè)面加載時(shí)創(chuàng)建了一個(gè)全屏大小的畫布,并使用 JavaScript 生成了多個(gè)具有不同運(yùn)動(dòng)軌道的星星對(duì)象。每顆星星都具有隨機(jī)的半徑、位置、運(yùn)動(dòng)速度和閃爍效果。通過(guò)使用定時(shí)器和 requestAnimationFrame 方法,實(shí)現(xiàn)了星星的運(yùn)動(dòng)和閃爍效果,從而呈現(xiàn)出逼真的星空背景。整體效果是一個(gè)動(dòng)態(tài)的、具有視差效果的星空背景,為網(wǎng)頁(yè)增添了視覺(jué)吸引力。

  1. 首先是 HTML 結(jié)構(gòu)部分:

    • 定義了一個(gè) HTML 文檔,并設(shè)置了字符集為 UTF-8。
    • 設(shè)置了頁(yè)面的標(biāo)題為“星空背景”。
    • 在 body 中定義了一個(gè)畫布元素?<canvas>,并指定了一個(gè) id 為 "canvas"。
  2. 緊接著是 JavaScript 部分:

    • 獲取了?<canvas>?元素以及其 2D 繪圖上下文。
    • 設(shè)置了畫布的寬度和高度為窗口的寬度和高度減去 50。
    • 定義了一些變量,如顏色值、存儲(chǔ)星星的數(shù)組、星星數(shù)量等。
  3. 創(chuàng)建用于渲染星星的小畫布:

    • 創(chuàng)建了一個(gè)新的?<canvas>?元素作為緩存畫布。
    • 設(shè)置了緩存畫布的寬高,并獲取其 2D 上下文。
    • 創(chuàng)建了一個(gè)徑向漸變對(duì)象,定義了星星的顏色漸變規(guī)則。
    • 繪制了一個(gè)圓形填充的圖案,代表星星的外觀。
  4. 定義了兩個(gè)輔助函數(shù):

    • random(min, max)?用于生成指定范圍內(nèi)的隨機(jī)數(shù)。
    • maxOrbit(x, y)?用于確定星星軌道的最大半徑。
  5. 創(chuàng)建了一個(gè)構(gòu)造函數(shù) Star 用于創(chuàng)建星星對(duì)象:

    • 初始化了星星的軌道半徑、半徑大小、位置等屬性。
    • 將每個(gè)創(chuàng)建的星星對(duì)象存儲(chǔ)到 stars 數(shù)組中。
  6. 定義了 Star 原型對(duì)象的 draw 方法:

    • 根據(jù)時(shí)間變化計(jì)算星星的位置坐標(biāo)。
    • 控制星星閃爍效果的透明度變化。
    • 使用緩存畫布繪制星星。
    • 更新星星的時(shí)間,實(shí)現(xiàn)星星的運(yùn)動(dòng)效果。
  7. 創(chuàng)建了一定數(shù)量的星星對(duì)象,并將其存儲(chǔ)在 stars 數(shù)組中。

  8. 定義了 start 函數(shù)開(kāi)始繪制星空背景:

    • 設(shè)置了畫布的全局合成操作模式和透明度。
    • 填充了一個(gè)半透明的矩形作為背景。
    • 設(shè)置了全局合成操作模式為 'lighter',實(shí)現(xiàn)星星的疊加效果。
    • 遍歷所有星星對(duì)象,并調(diào)用其?draw?方法進(jìn)行繪制。
    • 使用?window.requestAnimationFrame?實(shí)現(xiàn)動(dòng)畫效果。
  9. 調(diào)用 start 函數(shù),開(kāi)始繪制星空背景效果。

三、運(yùn)行效果

HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景,HTML,HTML5,Canvas,JavaScript,前端開(kāi)發(fā),Web開(kāi)發(fā),CSS樣式

HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景,HTML,HTML5,Canvas,JavaScript,前端開(kāi)發(fā),Web開(kāi)發(fā),CSS樣式

HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景,HTML,HTML5,Canvas,JavaScript,前端開(kāi)發(fā),Web開(kāi)發(fā),CSS樣式文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828665.html

到了這里,關(guān)于HTML5 Canvas與JavaScript攜手繪制動(dòng)態(tài)星空背景的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HTML5 Canvas(畫布)

    HTML5 Canvas(畫布)

    canvas標(biāo)簽定義圖形,比如圖表和其他圖像,你必須用腳本來(lái)繪制圖形。 在畫布上( Canvas )畫一個(gè)共紅色矩形,漸變矩形,彩色矩形,和一些彩色文字。 HTML5canvas元素用于圖形繪制,通過(guò)腳本(通常是 Javascript)來(lái)完成。 canvas標(biāo)簽是圖形容器,必須使用腳來(lái)繪制圖形。 你可以

    2024年02月14日
    瀏覽(31)
  • Canvas繪制毛玻璃背景分享海報(bào)

    Canvas繪制毛玻璃背景分享海報(bào)

    最近重新設(shè)計(jì)了分享海報(bào),用毛玻璃作為背景,使整體更有質(zhì)感,如果沒(méi)有用到canvas,毛玻璃效果其實(shí)很好實(shí)現(xiàn),給元素添加一個(gè)濾鏡即可(比如:filter: blur(32px)),但是實(shí)踐的過(guò)程中發(fā)現(xiàn),canvas在IOS端一直沒(méi)有效果,查了一個(gè)文檔發(fā)現(xiàn)IOS端不支持filter。。。有點(diǎn)想罵人。。

    2024年02月12日
    瀏覽(19)
  • 關(guān)于HTML5畫布canvas的功能

    關(guān)于HTML5畫布canvas的功能

    一、畫布的使用 1、首先創(chuàng)建一個(gè)畫布(canvas) canvas id=”myCanvas” width=”200” height=”100” style=”border:1px solid #000000”/canvas 2、使用JavaScript來(lái)繪制圖像 script Var c=document.getElementByID(“myCanvas”)//得到畫布 Var ctx=c.getContext(“2d”);//得到畫筆 Cxt.fillStyle=”#FF0000”;//填充顏色 Cxt

    2024年02月06日
    瀏覽(25)
  • html5學(xué)習(xí)筆記14-Canvas 圖形

    https://www.runoob.com/html/html5-canvas.html Canvas 參考手冊(cè). https://www.runoob.com/tags/ref-canvas.html HTML5 元素用于圖形的繪制,通過(guò)腳本 (通常是JavaScript)來(lái)完成. 標(biāo)簽只是圖形容器,您必須使用腳本來(lái)繪制圖形。 你可以通過(guò)多種方法使用 canvas 繪制路徑,盒、圓、字符以及添加圖像。 創(chuàng)建一

    2024年02月11日
    瀏覽(27)
  • (小程序)canvas 繪制圖片做背景(新手向)

    小程序繪制圖片為背景,首先我們需要把圖片先下載下來(lái)(這里最好是封裝一個(gè)函數(shù),因?yàn)楸尘安豢赡苤挥幸粡埖模┫旅媸谴a,一般直接復(fù)制就能使用,有可能需要微調(diào)

    2024年02月07日
    瀏覽(20)
  • 編程筆記 html5&css&js 032 HTML Canvas

    Canvas畫布,就是可以用來(lái)畫畫的地方,不是用戶在瀏覽器上畫圖,而是會(huì)javascript畫圖。這區(qū)別于直接載入一張圖片,是可以根據(jù)需要進(jìn)行繪制。 HTML canvas 元素用于通過(guò)腳本(通常是 JavaScript)動(dòng)態(tài)地繪制圖形。 canvas 元素只是圖形的容器。您必須使用腳本來(lái)繪制實(shí)際的圖形。

    2024年01月23日
    瀏覽(34)
  • HTML5 Canvas和Svg:哪個(gè)簡(jiǎn)單且好用?

    HTML5 Canvas和Svg:哪個(gè)簡(jiǎn)單且好用?

    HTML5 Canvas 和?SVG?都是基于標(biāo)準(zhǔn)的 HTML5 技術(shù),可用于創(chuàng)建令人驚嘆的圖形和視覺(jué)體驗(yàn)。 首先,讓我們花幾句話介紹HTML5 Canvas和SVG。 Canvas(通過(guò) 標(biāo)簽使用)是一個(gè) HTML 元素,用于在用戶計(jì)算機(jī)屏幕上動(dòng)態(tài)繪制圖形(線條、條形、圖形等)。不過(guò),canvas 元素只是信息的容器,繪圖

    2024年02月13日
    瀏覽(23)
  • 情人節(jié)定制:HTML5 Canvas全屏七夕愛(ài)心表白特效

    情人節(jié)定制:HTML5 Canvas全屏七夕愛(ài)心表白特效

    “這個(gè)世界亂糟糟的而你干干凈凈可以懸在我心上做太陽(yáng)和月亮?!?,七夕節(jié)表白日,你要錯(cuò)過(guò)嗎?如果你言辭不善,羞于開(kāi)口的話,可以使用 html5 canvas 制作浪漫的七夕愛(ài)心表白動(dòng)畫特效,全屏的愛(ài)心和表白語(yǔ),了解一下!? ?? 最后,祝天下有情人終成眷屬 ??

    2024年02月11日
    瀏覽(95)
  • Html利用Canvas繪制圖形

    Html利用Canvas繪制圖形

    今天接到粉絲私信,詢問(wèn)是否可以通過(guò)Canvas繪制一些圖形,然后根據(jù)粉絲提供的模板圖,通過(guò)Canvas進(jìn)行模擬繪制,通過(guò)分析發(fā)現(xiàn),圖形雖然相對(duì)簡(jiǎn)單,但是如果不借助相應(yīng)的軟件,純代碼繪制還是稍微費(fèi)些時(shí)間。今天將繪制圖形源碼分享出來(lái),僅供學(xué)習(xí)分享之用,如有不足之

    2024年02月16日
    瀏覽(17)
  • HTML5 2d canvas 庫(kù) —— Fabric.js 和 Konva.js

    原生 canvas 的操作主要基于上下文,需要使用者自己從0開(kāi)始去實(shí)現(xiàn)一些基本功能,比較復(fù)雜。而 canvas 庫(kù)文件則封裝好了許多便利的對(duì)象,使得用戶可以在比較高級(jí)的層面上進(jìn)行繪制。 Fabric.js 官網(wǎng):Fabric.js Javascript Canvas Library Konva.js 官網(wǎng):Konva 中文文檔 中文API 優(yōu)點(diǎn): 比較老

    2024年02月12日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包