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 相关文章推荐
Jquery弹出窗口插件 LeanModal的使用方法
Mar 10 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
Feb 18 Javascript
JS控件bootstrap suggest plugin使用方法详解
Mar 25 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 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中实现记住密码自动登录的代码
2011/03/02 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
用于table内容排序
2006/07/21 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
js中作用域的实例解析
2017/03/16 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python获取Linux发行版名称
2019/08/30 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
关于VPN
2012/06/10 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
事假请假条范文
2014/04/11 职场文书
技术股份合作协议书
2014/10/05 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
2016年元旦主持词
2015/07/06 职场文书