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控制框架刷新
Aug 01 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
javascript生成随机数方法汇总
Nov 12 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
JavaScript基础之this详解
Jun 04 Javascript
Node 代理访问的实现
Sep 19 Javascript
vue实现折线图 可按时间查询
Aug 21 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程序员的13个好习惯小结
2012/02/20 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
python实现多进程通信实例分析
2019/09/01 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
自主招生自荐信指南
2014/02/04 职场文书
2014年终个人工作总结
2014/11/07 职场文书
护士求职自荐信范文
2015/03/04 职场文书
八年级作文之友情
2019/11/25 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android