- A+
所属分类:美化特效
html5 特效代码旋转的星空,首先要设置背景为暗一点的背景色或者图片,例如设置成黑色的背景颜色,然后把代码复制到 html 文件里,设置下下方 JS 里的一些设置,如星星的数量、星星移动的范围、星星的大小等,保存后用支持 html5 的浏览器打开就能看到旋转的星空特效。
温馨提示:如果使用复制按钮代码出现错误,建议使用 ctrl+c 来复制代码。
- <!doctype html>
- <HTML>
- <HEAD>
- <meta charset = “utf-8” >
- <TITLE> 旋转的星空</ TITLE>
- <style type = “text / css” >
- 身体{ 背景:黑色; 填充:0 ; 保证金:0 ; 溢出:隐藏}
- 。标题{ margin :0 auto ; 宽度:100 %; 身高:100 %; background - color :#000; position:relative;}
- </样式>
- </ HEAD>
- <BODY>
- <div class = “header” > <canvas id = “canvas” > </ canvas> </ div>
- <SCRIPT>
- var canvas = document 。getElementById ('canvas' ),
- ctx = 画布。getContext ('2d' ),
- w = 画布。width = window 。innerWidth ,
- h = 画布。高度= 窗口。innerHeight ,
- 色调= 217 ,
- stars = [],
- count = 0 ,
- maxStars = 3000 ; //星星数量
- var canvas2 = document 。createElement ('canvas' ),
- ctx2 = canvas2 。getContext ('2d' );
- canvas2 。宽度= 100 ;
- canvas2 。身高= 100 ;
- var half = canvas2 。宽度/ 2 ,
- gradient2 = ctx2 。createRadialGradient (半,一半,0 ,一半,一半,一半);
- 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 。弧(半,一半,一半,0 ,数学。PI * 2 );
- ctx2 。fill ();
- //结束缓存
- 函数 random (min ,max ){
- 如果(参数。长度< 2 ){
- max = min ;
- min = 0 ;
- }
- if (min > max ){
- var hold = max ;
- max = min ;
- min = hold ;
- }
- 返回数学。地板(数学。随机()* (最大值- 最小+ 1 ))+ 分钟;
- }
- function maxOrbit (x ,y ){
- var max = 数学。max (x ,y ),
- 直径= 数学。轮(数学。SQRT (最大* 最大+ 最大* 最大));
- 返回直径/ 2 ;
- //星星移动范围,值越大范围越小,
- }
- var Star = function (){
- 这个。orbitRadius = random (maxOrbit (w ,h ));
- 这个。半径= 随机(60 ,此。orbitRadius )/ 8 ;
- //星星大小
- 这个。orbitX = w / 2 ;
- 这个。轨道 Y = h / 2 ;
- 这个。timePassed = random (0 ,maxStars );
- 这个。速度= 随机(此。orbitRadius )/ 50000 ;
- //星星移动速度
- 这个。阿尔法= 随机(2 ,10 )/ 10 ;
- count ++;
- 星星[ count ] = 这个;
- }
- 明星。原型。draw = function (){
- var x = 数学。罪(此。timePassed )* 此。orbitRadius + 这个。轨道 X ,
- y = 数学。COS (此。timePassed )* 此。orbitRadius + 这个。轨道 Y ,
- twinkle = random (10 );
- 如果(闪烁=== 1 && 此。阿尔法> 0 ){
- 这个。alpha - = 0.05 ;
- } 否则如果(闪烁=== 2 && 此。阿尔法< 1 ){
- 这个。alpha + = 0.05 ;
- }
- ctx 。globalAlpha = this 。阿尔法;
- ctx 。的 drawImage (canvas2 ,X - 此。半径/ 2 ,ý - 此。半径/ 2 ,此。半径,此。半径);
- 这个。timePassed + = 这个。速度;
- }
- for (var i = 0 ; i < maxStars ; i ++){
- 新的星();
- }
- function animation (){
- ctx 。globalCompositeOperation = 'source-over' ;
- ctx 。globalAlpha = 0.5 ; //尾巴
- ctx 。fillStyle = 'hsla(' + hue + ',64%,6%,2)' ;
- ctx 。fillRect (0 ,0 ,瓦特,ħ )
- ctx 。globalCompositeOperation = '打火机' ;
- 为(VAR 我= 1 ,升= 分。长度; 我< 升; 我++){
- 星星[ i ]。draw ();
- };
- 窗口。requestAnimationFrame (动画);
- }
- 动画();
- </ SCRIPT>
- </ BODY>
是不是很有趣呢?!