温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何利用CSS+JS实现唯美星空轨迹运动效果

发布时间:2021-04-20 13:14:39 来源:亿速云 阅读:264 作者:小新 栏目:web开发

小编给大家分享一下如何利用CSS+JS实现唯美星空轨迹运动效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

css是什么意思

css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一种定义样式结构如字体、颜色、位置等的语言,并且css样式可以直接存储于HTML网页或者单独的样式单文件中,而样式规则的优先级由css根据这个层次结构决定,从而实现级联效果,发展至今,css不仅能装饰网页,也可以配合各种脚本对于网页进行格式化。

先给大家分享效果图:

如何利用CSS+JS实现唯美星空轨迹运动效果 

给大家分享一个使用CSS+JS实现的唯美星空轨迹运动效果, 这样的效果不输给Flash   。相关代码如下:

<!doctype html> <html lang="en"> <head>   <meta charset="UTF-8">   <title>cloth</title>   <style>    body {   background: #000;  } img {   display: block;  float: left;    margin: 0 1px 0 0; } canvas {   background: #131c35 linear-gradient(#192853, #131c35);  display: block;   float: left;   /* uncomment to test overlay */   /*   position: absolute;   left: 0;   opacity: .5;   top: 0;   */   }   </style> </head> <body>   <div id="container"></div>   <script type="text/javascript" src="http://cdn.gbtags.com/jquery/1.11.1/jquery.min.js"></script>   <canvas id="c"></canvas>   <img src="http://dribbble.s3.amazonaws.com/users/36991/screenshots/674715/game.png" />   <script>     var c = document.getElementById('c'),     ctx = c.getContext('2d'),     cw = c.width = 400,   ch = c.height = 300,     rand = function(a,b){return ~~((Math.random()*(b-a+1))+a);},     dToR = function(degrees){         return degrees * (Math.PI / 180);     },     circle = {       x: (cw / 2) + 5,       y: (ch / 2) + 22,       radius: 90,       speed: 2,       rotation: 0,       angleStart: 270,       angleEnd: 90,       hue: 220,       thickness: 18,       blur: 25     },     particles = [],     particleMax = 100,     updateCircle = function(){       if(circle.rotation < 360){        circle.rotation += circle.speed;       } else {        circle.rotation = 0;        }     },     renderCircle = function(){       ctx.save();       ctx.translate(circle.x, circle.y);       ctx.rotate(dToR(circle.rotation));       ctx.beginPath();       ctx.arc(0, 0, circle.radius, dToR(circle.angleStart), dToR(circle.angleEnd), true);       ctx.lineWidth = circle.thickness;           ctx.strokeStyle = gradient1;       ctx.stroke();       ctx.restore();     },     renderCircleBorder = function(){       ctx.save();       ctx.translate(circle.x, circle.y);       ctx.rotate(dToR(circle.rotation));       ctx.beginPath();       ctx.arc(0, 0, circle.radius + (circle.thickness/2), dToR(circle.angleStart), dToR(circle.angleEnd), true);       ctx.lineWidth = 2;         ctx.strokeStyle = gradient2;       ctx.stroke();       ctx.restore();     },   renderCircleFlare = function(){       ctx.save();       ctx.translate(circle.x, circle.y);       ctx.rotate(dToR(circle.rotation+185));       ctx.scale(1,1);       ctx.beginPath();       ctx.arc(0, circle.radius, 30, 0, Math.PI *2, false);       ctx.closePath();       var gradient3 = ctx.createRadialGradient(0, circle.radius, 0, 0, circle.radius, 30);             gradient3.addColorStop(0, 'hsla(330, 50%, 50%, .35)');       gradient3.addColorStop(1, 'hsla(330, 50%, 50%, 0)');       ctx.fillStyle = gradient3;       ctx.fill();            ctx.restore();     },     renderCircleFlare2 = function(){       ctx.save();       ctx.translate(circle.x, circle.y);       ctx.rotate(dToR(circle.rotation+165));       ctx.scale(1.5,1);       ctx.beginPath();       ctx.arc(0, circle.radius, 25, 0, Math.PI *2, false);       ctx.closePath();       var gradient4 = ctx.createRadialGradient(0, circle.radius, 0, 0, circle.radius, 25);       gradient4.addColorStop(0, 'hsla(30, 100%, 50%, .2)');       gradient4.addColorStop(1, 'hsla(30, 100%, 50%, 0)');       ctx.fillStyle = gradient4;       ctx.fill();            ctx.restore();     },      createParticles = function(){       if(particles.length < particleMax){         particles.push({           x: (circle.x + circle.radius * Math.cos(dToR(circle.rotation-85))) + (rand(0, circle.thickness*2) - circle.thickness),           y: (circle.y + circle.radius * Math.sin(dToR(circle.rotation-85))) + (rand(0, circle.thickness*2) - circle.thickness),           vx: (rand(0, 100)-50)/1000,           vy: (rand(0, 100)-50)/1000,           radius: rand(1, 6)/2,           alpha: rand(10, 20)/100         });       }     },     updateParticles = function(){       var i = particles.length;       while(i--){        var p = particles[i];         p.vx += (rand(0, 100)-50)/750;         p.vy += (rand(0, 100)-50)/750;         p.x += p.vx;         p.y += p.vy;         p.alpha -= .01;         if(p.alpha < .02){           particles.splice(i, 1)         }       }     },     renderParticles = function(){       var i = particles.length;       while(i--){        var p = particles[i];         ctx.beginPath();         ctx.fillRect(p.x, p.y, p.radius, p.radius);         ctx.closePath();         ctx.fillStyle = 'hsla(0, 0%, 100%, '+p.alpha+')';       }     },     clear = function(){       ctx.globalCompositeOperation = 'destination-out';       ctx.fillStyle = 'rgba(0, 0, 0, .1)';       ctx.fillRect(0, 0, cw, ch);       ctx.globalCompositeOperation = 'lighter';       }     loop = function(){       clear();       updateCircle();       renderCircle();       renderCircleBorder();       renderCircleFlare();       renderCircleFlare2();       createParticles();       updateParticles();       renderParticles();     } /* Append Canvas */ //document.body.appendChild(c); /* Set Constant Properties */ ctx.shadowBlur = circle.blur; ctx.shadowColor = 'hsla('+circle.hue+', 80%, 60%, 1)'; ctx.lineCap = 'round' var gradient1 = ctx.createLinearGradient(0, -circle.radius, 0, circle.radius); gradient1.addColorStop(0, 'hsla('+circle.hue+', 60%, 50%, .25)'); gradient1.addColorStop(1, 'hsla('+circle.hue+', 60%, 50%, 0)'); var gradient2 = ctx.createLinearGradient(0, -circle.radius, 0, circle.radius); gradient2.addColorStop(0, 'hsla('+circle.hue+', 100%, 50%, 0)'); gradient2.addColorStop(.1, 'hsla('+circle.hue+', 100%, 100%, .7)'); gradient2.addColorStop(1, 'hsla('+circle.hue+', 100%, 50%, 0)'); /* Loop It, Loop It Good */ setInterval(loop, 16);   </script> </body> </html>  -

以上是“如何利用CSS+JS实现唯美星空轨迹运动效果”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI