special effects - 星空宇宙背景特效

news/2024/11/23 5:27:18/

星空宇宙背景特效

  • 一. 效果图
  • 二. 实现代码

一. 效果图

在这里插入图片描述

二. 实现代码

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>星空宇宙背景特效</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>//宇宙特效"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;//星星数量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 cachefunction 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;//星星移动范围,值越大范围越小,}var Star = function () {this.orbitRadius = random(maxOrbit(w, h));this.radius = random(60, this.orbitRadius) / 18;//星星大小this.orbitX = w / 2;this.orbitY = h / 2;this.timePassed = random(0, maxStars);this.speed = random(this.orbitRadius) / 500000;//星星移动速度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; //尾巴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>

http://www.ppmy.cn/news/649618.html

相关文章

美轮美奂宇宙星空制作神器Spacescape

本文章由cartzhang编写&#xff0c;转载请注明出处。 所有权利保留。 文章链接&#xff1a;http://blog.csdn.net/cartzhang/article/details/46444569 作者&#xff1a;cartzhang 一、 简介 Spacescape 宇宙星空工具就是创建宇宙天空盒的工具&#xff0c;天空盒有星星和星…

用零知识证明连接多链宇宙

目录 一、前言 二、Bridges和Zero Knowledge Proofs 三、Succinct Verification of Proof of Consensus (Succinct Labs)

php代码授权和更新

数据表 应用表、 授权时长表、 应用版本表、 用户表 用户会员等级表 应用授权表、 应用订单表、 充值订单表、 提现表、 更新记录表、 下载记录表、 普通授权代码 基本信息 接口位置&#xff1a;/api/check/auth 参数提交方式为 POST\GET 参数1 $app 为客户端系统在授权系统…

【从零开始学习JAVA | 第二十五篇】泛型

目录 前言&#xff1a; 泛型&#xff1a; 额外拓展&#xff1a; 总结&#xff1a; 前言&#xff1a; 本文将详细介绍之前我们在JAVA 中一直在讲的泛型&#xff0c;各位感兴趣的同学可以点击进来观看。 泛型&#xff1a; 泛型是一种编程概念&#xff0c;它允许在定义类、接…

单片机与触摸屏通信c语言,讲述如何实现单片机与触摸屏的通信

随着触摸屏的应用和产量的增加,价格下降。因而有可能使用触摸屏作为单片机控制设备的键盘和显示装置,提高单片机控制设备的档次。触摸屏与PLC联合使用时,触摸屏的主要功能是: ①显示PLC输入,输出端13或辅助继电器的开关状态。 ②用触摸按键强制PLC输入,输出端口或辅助继电…

typec扩展坞hdmi没反应_Type-C转HDMI+USB+PD转接头手机连接电视图文教程疑难解答

本文为Type-C转HDMI+USB+PD扩展坞连接教程,手机投屏电视模式和电脑模式的图文说明,适用于Type-C接口支持视频功能的手机,如华为P30、华为P30 Pro、华为Mate20、华为Mate20 Pro、Mate10/Mate10 pro、华为P20、三星S8/S8+/S9/S9+、三星Note8、小米Air、联想小新 Air 13 i5 201…

ios手机 按钮点击事件没反应(按钮是js生成的)

昨天碰到这种问题&#xff0c;在Android手机上点击事件是可以的&#xff0c;但是iOS手机没反应。用的是jQuery&#xff0c;我立即就想到是点击事件格式写的有问题&#xff0c;因为 我之前就碰到过类似的问题&#xff0c;比如&#xff0c;你用js 生成的一个按钮 <div class&…

有关像素流送手机浏览器触屏bug的总结

Bug描述&#xff1a; 使用手机浏览器操作UE4像素流送程序时&#xff0c;程序只能正常处理一个按键。 当有两个或两个以上按键同时按下时&#xff0c;有一定几率导致程序始终有一个按键没有释放&#xff0c;致使程序再也无法处理用户的正常输入&#xff08;多指触摸后有一个按键…