当前位置:网站首页>Special effects - starry cosmic background effects
Special effects - starry cosmic background effects
2022-07-24 06:41:00 【Jie_ one thousand nine hundred and ninety-seven】
Starry universe background effect
One . design sketch

Two . Implementation code
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> Starry universe background effect </title>
<style> * {
margin: 0; padding: 0; width: 100%; height: 100%; } .canvasContainer {
width: 100%; height: 100%; overflow: hidden; } </style>
</head>
<body>
<div class="canvasContainer">
<canvas id="canvas"></canvas>
</div>
<script> // Cosmic effects "use strict"; var canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d'), w = canvas.width = window.innerWidth, h = canvas.height = window.innerHeight, hue = 217, stars = [], count = 0, maxStars = 2500;// The number of stars var canvas2 = document.createElement('canvas'), ctx2 = canvas2.getContext('2d'); canvas2.width = 100; canvas2.height = 100; var half = canvas2.width / 2, gradient2 = ctx2.createRadialGradient(half, half, 0, half, half, half); gradient2.addColorStop(0.025, '#CCC'); gradient2.addColorStop(0.1, 'hsl(' + hue + ', 61%, 33%)'); gradient2.addColorStop(0.25, 'hsl(' + hue + ', 64%, 6%)'); gradient2.addColorStop(1, 'transparent'); ctx2.fillStyle = gradient2; ctx2.beginPath(); ctx2.arc(half, half, half, 0, Math.PI * 2); ctx2.fill(); // End cache 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; // The moving range of stars , The larger the value, the smaller the range , } var Star = function () {
this.orbitRadius = random(maxOrbit(w, h)); this.radius = random(60, this.orbitRadius) / 18; // Star size this.orbitX = w / 2; this.orbitY = h / 2; this.timePassed = random(0, maxStars); this.speed = random(this.orbitRadius) / 500000; // The speed at which the stars move this.alpha = random(2, 10) / 10; count++; stars[count] = this; } Star.prototype.draw = function () {
var 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; } for (var i = 0; i < maxStars; i++) {
new Star(); } function animation() {
ctx.globalCompositeOperation = 'source-over'; ctx.globalAlpha = 0.5; // tail ctx.fillStyle = 'hsla(' + hue + ', 64%, 6%, 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(animation); } animation(); </script>
</body>
</html>
边栏推荐
猜你喜欢

These 10 kinds of timed tasks have been learned, and you can float directly

【波形/信号发生器】基于 STC1524K32S4 for C on Keil

grep与正则的搭配使用

Website B video is embedded in the web page, and relevant controls are hidden

File system and log analysis

It's not too much to fight a landlord in idea!

Restful API introduction

PXE technology network installation

Wasm vs EVM, Boca's choice predicts the future of the public chain

Jmeter分布式压测
随机推荐
These 10 kinds of timed tasks have been learned, and you can float directly
Install agent and proxy using custom ZABBIX package (version 4.0.5)
sql server 同步数据库 跨网段无公网ip几个常见小问题问题
grep与正则的搭配使用
Custom MVC 2.0
【音频解码芯片】VS1503音频解码芯片的应用
Function application of MySQL
Modeling of XML
Today, let's talk about the underlying architecture design of MySQL database. How much do you know?
OpenSSL version upgrade
ESP32超详细学习记录:NTP同步时间
Windows下Mysql5.7忘记root密码解决方法
Common commands and package management of go language
【LVGL布局】网格布局
【LVGL(6)】显示中文设置,制作中文字库
Write blog at leisure ~ briefly talk about let, VaR and Const
LM393 voltage comparator and its typical circuit introduction
go语言的快速上手
实验:LVM逻辑卷的建立、扩容、与删除
General paging 01