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 相关文章推荐
优化JavaScript脚本的性能的几个注意事项
Dec 22 Javascript
javascript 禁止复制网页
Jun 11 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
在vue项目中使用sass语法问题
Jul 18 Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 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
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
PHP经典面试题
2016/09/03 面试题
毕业生教师求职信
2013/10/20 职场文书
产品工艺师的岗位职责
2013/11/15 职场文书
员工培训邀请函
2014/02/02 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
信访稳定工作汇报
2014/10/27 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
党员个人总结范文
2015/02/14 职场文书