js canvas实现星空连线背景特效


Posted in Javascript onNovember 01, 2019

本文实例为大家分享了js canvas星空连线背景的具体代码,供大家参考,具体内容如下

<html>
 <head>
 <meta charset="UTF-8">
 <title>canvas星空连线背景特效</title>
 <style type="text/css">
 body{
 margin: 0;
 }
 #canvas{
 display: block;
 background: #000;
 margin: 0 auto;
 }
 </style>
 </head>
 <body>
 <canvas id="canvas"></canvas>
 <script>
 function Starry(){
 this.cxt=canvas.getContext("2d");
 canvas.width=window.innerWidth;
 canvas.height=window.innerHeight;
 this.cW=canvas.width;
 this.cH=canvas.height;
 this.num=200;
 this.data=[];
 }
 Starry.prototype={
 init: function(){
 for (var i=0;i<this.num;i++) {
 this.data[i]={
 x:Math.random()*this.cW,
 y:Math.random()*this.cH,
 cX:Math.random()*0.6-0.3,
 cY:Math.random()*0.6-0.3
 };
 this.drawCircle(this.data[i].x,this.data[i].y);
 }
 
 },
 drawCircle: function(x,y){
 var cxt=canvas.getContext("2d");
 cxt.save();//保存路径
 cxt.fillStyle="pink";
 cxt.beginPath();//开始路径
 cxt.arc(x,y,1,0,Math.PI*2,false);
 cxt.closePath();//结束路径
 cxt.fill();//填充方法
 cxt.restore();//释放路径
 },
 drawLine: function(x1,y1,x2,y2){
 var cxt=this.cxt;
 var color=cxt.createLinearGradient(x1,y1,x2,y2);
 color.addColorStop(0,"yellow");
 color.addColorStop(1,"green");
 cxt.save();
 cxt.strokeStyle=color;
 cxt.beginPath();//开始路径
 cxt.moveTo(x1,y1);
 cxt.lineTo(x2,y2);
 cxt.closePath();//结束路径
 cxt.stroke();//填充方法
 cxt.restore();//释放路径
 
 },
 moveCircle: function(){
 var self=this;
 self.cxt.clearRect(0,0,self.cW,self.cH);
 for(var i=0;i<self.num;i++){
 self.data[i].x+=self.data[i].cX;
 self.data[i].y+=self.data[i].cY;
 if(self.data[i].x>self.cW||self.data[i].x<0){
 self.data[i].cX=-self.data[i].cX;
 }
 if(self.data[i].x>self.cH||self.data[i].y<0){
 self.data[i].cY=-self.data[i].cY;
 }
 this.drawCircle(self.data[i].x,self.data[i].y);
 for(var j=i+1;j<self.num;j++){
 if(Math.pow(self.data[i].x-self.data[j].x,2)
 +Math.pow(self.data[i].y-self.data[j].y,2)
 <=50*50){
 self.drawLine(self.data[i].x,self.data[i].y,
 self.data[j].x,self.data[j].y);
 }
 }
 }
 }
 }
 var starry=new Starry();
 starry.init();
 setInterval(function(){starry.moveCircle();},1);
 </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 利用className得到对象的实现代码
Nov 15 Javascript
基于jquery实现表格无刷新分页
Jan 07 Javascript
每日十条JavaScript经验技巧(二)
Jun 23 Javascript
微信小程序 教程之引用
Oct 18 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
Dec 12 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
Javascript的this详解
Mar 23 Javascript
小程序实现自定义导航栏适配完美版
Apr 02 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 Javascript
如何制作自己的原生JavaScript路由
May 05 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 #jQuery
微信小程序定义和调用全局变量globalData的实现
Nov 01 #Javascript
vue-router 中 meta的用法详解
Nov 01 #Javascript
VUE 解决mode为history页面为空白的问题
Nov 01 #Javascript
js+canvas实现两张图片合并成一张图片的方法
Nov 01 #Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 #Javascript
vue设置动态请求地址的例子
Nov 01 #Javascript
You might like
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
php的ddos攻击解决方法
2015/01/08 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
详解angular笔记路由之angular-router
2017/09/12 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python3中的json模块使用详解
2018/05/05 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
python实现抖音点赞功能
2019/04/07 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
python可以用哪些数据库
2020/06/22 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
读书月活动方案
2014/05/22 职场文书
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android