最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JS實現(xiàn)漫畫中大雨滂沱的效果

 更新時間:2022年06月13日 08:20:12   作者:肥學  
這篇文章主要為大家詳細介紹了如何利用JavaScript實現(xiàn)漫畫中大雨滂沱的效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

演示

技術棧

最近用canvas有點上癮,接著上次的雨滴和流星雨的思路我們在改進一下

<canvas id='canvas' width='1280' height='720'></canvas>

源碼

css部分

body {
margin:0;
padding:0;
background: #000;
overflow:hidden;
}
canvas {
background:url('../img/maxresdefault.jpg');
background-size: cover;
background-repeat: no-repeat;
background-position: center center;  
}

background-size屬性指定背景圖片大小。

默認值: auto 繼承: no 版本: CSS3 JavaScript 語法: object object.style.backgroundSize="60px 80px"

語法

background-size: length|percentage|cover|contain;

length 設置背景圖片高度和寬度。第一個值設置寬度,第二個值設置的高度。如果只給出一個值,第二個是設置為 auto(自動)

percentage 將計算相對于背景定位區(qū)域的百分比。第一個值設置寬度,第二個值設置的高度。如果只給出一個值,第二個是設置為"auto(自動)"

cover 此時會保持圖像的縱橫比并將圖像縮放成將完全覆蓋背景定位區(qū)域的最小大小。

contain 此時會保持圖像的縱橫比并將圖像縮放成將適合背景定位區(qū)域的最大大小。

大雨滂沱

function _pexresize() {
			var cw = window.innerWidth;
			var ch = window.innerHeight;
			if (cw<=ch*stgw/stgh) {
				loffset = 0;
				toffset = Math.floor(ch-(cw*stgh/stgw))/2;
				canvas.style.width = cw + "px";
				canvas.style.height = Math.floor(cw*stgh/stgw) + "px";
			} else {
				loffset = Math.floor(cw-(ch*stgw/stgh))/2;
				toffset = 0;
				canvas.style.height = ch + "px";
				canvas.style.width = Math.floor(ch*stgw/stgh) + "px";
			}
			canvas.style.marginLeft = loffset +"px";
			canvas.style.marginTop = toffset +"px";
		}

隨機雨點和持續(xù)降雨

for (var l=0;l<lcount;l++) {
			ctx.clearRect(0,0,stgw,stgh);
			for (var i=0;i<count*(lcount-l)/1.5;i++) {
				var myx = Math.floor(Math.random()*stgw);
				var myy = Math.floor(Math.random()*stgh);
				var myh = l*6+8;
				var myw = myh/10;
				ctx.beginPath();
				ctx.moveTo(myx,myy);
				ctx.lineTo(myx+myw,myy+myh);
				ctx.arc(myx, myy+myh, myw, 0, 1 * Math.PI);
				ctx.lineTo(myx-myw,myy+myh);
				ctx.closePath();
				ctx.fill();
			}
			layer[l] = new Image();
			layer[l].src = canvas.toDataURL("image/png");
			layery[l] = 0;
		}



		var stt = 0;
		var str = Date.now()+Math.random()*4000;
		var stact = false;

		function animate() {
			ctx.clearRect(0,0,stgw,stgh);

			for (var l=0;l<lcount;l++) {
				layery[l] += (l+1.5)*5;
				if (layery[l]>stgh) {

					layery[l] =layery[l]-stgh;
				}
				ctx.drawImage(layer[l],0,layery[l]);
				ctx.drawImage(layer[l],0,layery[l]-stgh);
			}
			if (Date.now()>str) {
				stact = true;
			}
			if (stact) {
				stt++;
				if (stt<5+Math.random()*10) {
					var ex = stt/30;
				} else {
					var ex = (stt-10)/30;
				}
				if (stt>20) {
					stt = 0;
					stact = false;
					str = Date.now()+Math.random()*8000+2000;
				}

				ctx.fillStyle = "rgba(255,255,255,"+ex+")";
				ctx.fillRect(0,0,stgw,stgh);
			}
			window.requestAnimationFrame(animate);
		}

到此這篇關于基于JS實現(xiàn)漫畫中大雨滂沱的效果的文章就介紹到這了,更多相關JS大雨滂沱效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

晋宁县| 崇礼县| 贵定县| 措勤县| 清远市| 芦山县| 文水县| 新乡市| 宣城市| 宜宾市| 恩平市| 绥芬河市| 德江县| 宜良县| 通州区| 大庆市| 建宁县| 贵阳市| 元谋县| 平谷区| 长顺县| 东至县| 安图县| 乾安县| 太保市| 维西| 吉木乃县| 延庆县| 潮安县| 巴里| 通辽市| 名山县| 嵩明县| 苍南县| 宜都市| 正镶白旗| 古蔺县| 凌海市| 开封市| 桂阳县| 察雅县|