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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
纯javascript判断查询日期是否为有效日期
Aug 24 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 Javascript
详解 vue.js用法和特性
Oct 15 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
Jun 29 Javascript
Jquery Datatables的使用详解
Jan 30 jQuery
jQuery实现开关灯效果
Aug 02 jQuery
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
浅谈PHP的反射机制
2016/12/15 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python实现redis三种cas事务操作
2017/12/19 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
CSS3 边框效果
2019/11/04 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
校本教研工作方案
2014/01/14 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
法制宣传日活动总结
2014/04/29 职场文书
数学教研活动总结
2014/07/02 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
黄埔军校观后感
2015/06/10 职场文书