效果如下:

代码如下:

canvas星座

* {

margin: 0;

padding: 0;

}

#box{

margin:10px 0 0 10px;;

}

input{

outline: none;

font-size:16px;

}

p{

margin-bottom: 10px

}

input[type=date]{

height:36px;

text-indent:10px;

}

input[type=button]{

background:#3A92FF;

color:white;

border: none;

height:40px;

padding:0 10px;

margin-left: -2px;

}

#canvas{

margin-left:10px;

background-color: #000;

display: none;

}

请选择您的出生日期

你的浏览器不支持canvas

var box=document.getElementById('box');

var birth=document.getElementById('birth');

var btn=document.getElementById('btn');

var canvas=document.getElementById("canvas");

var ctx=canvas.getContext("2d");

var g1,date,timer;

ctx.font = "30px Courier New";

/*星座位置*/

var star={

"白羊座":[

[[0.30,0.78],[0.34,0.66],[0.28,0.48],[0.60,0.26],[0.65,0.20],[0.71,0.23],[0.70,0.32],[0.72,0.36]],

[ [0,1,2,3,4,5],[3,6,7]]

],

"天秤座":[

[[0.16,0.67],[0.34,0.60],[0.60,0.27],[0.75,0.23],[0.84,0.47],[0.63,0.74],[0.51,0.78]],

[[0,1,2,3,4,5,6]]

],

"摩羯座":[

[[0.78,0.21],[0.78,0.34],[0.75,0.45],[0.75,0.70],[0.69,0.78],[0.31,0.66],[0.22,0.49],[0.30,0.53],[0.53,0.54]],

[[0,1,2,3,4,5,6,7,8,1]]

],

"水瓶座":[

[[0.45,0.21],[0.37,0.35],[0.27,0.51],[0.30,0.58],[0.29,0.64],[0.48,0.79],[0.51,0.71],[0.58,0.68],[0.73,0.74],[0.43,0.53],[0.53,0.47]],

[[0,1,2,3,4,5,6,7,8],[2,9,10]]

],

"双鱼座":[

[[0.28,0.43],[0.28,0.53],[0.36,0.73],[0.43,0.78],[0.50,0.70],[0.53,0.62],[0.57,0.58],[0.63,0.43],[0.67,0.39],[0.74,0.39],[0.77,0.34],[0.72,0.30],[0.75,0.22],[0.23,0.50],[0.66,0.33]],

[[0,1,2,3,4,5,6,7,8,9,10,11,12],[0,13,1],[8,14,11]]

],

"金牛座":[

[[0.29,0.21],[0.39,0.36],[0.50,0.51],[0.50,0.57],[0.61,0.63],[0.77,0.71],[0.79,0.79],[0.22,0.43],[0.39,0.57],[0.60,0.71],[0.67,0.76]],

[[0,1,2,3,4,5,6],[7,8,3],[4,9,10]]

],

"双子座":[

[[0.18,0.37],[0.25,0.45],[0.35,0.55],[0.39,0.68],[0.49,0.77],[0.51,0.63],[0.57,0.78],[0.28,0.29],[0.42,0.32],[0.61,0.49],[0.72,0.60],[0.83,0.59],[0.69,0.75],[0.22,0.54],[0.35,0.43],[0.48,0.21]],

[[0,1,2,3,4],[2,5,6],[7,8,9,10,11],[9,12],[13,1,14,8,15]]

],

"巨蟹座":[

[ [0.16,0.39],[0.27,0.36],[0.52,0.49],[0.57,0.65],[0.83,0.78],[0.44,0.21]],

[[0,1,2,3,4],[2,5]]

],

"狮子座":[

[

[0.16,0.75],[0.23,0.67],[0.39,0.77],[0.71,0.53],[0.64,0.39],[0.55,0.37],[0.47,0.27],[0.54,0.24],[0.60,0.27],[0.85,0.56]],

[[0,1,2,3,4,5,6,7,8],[3,9]]

],

"处女座":[

[[0.16,0.59],[0.35,0.63],[0.44,0.70],[0.62,0.51],[0.77,0.46],[0.84,0.37],[0.60,0.42],[0.65,0.26],[0.34,0.75]],

[[0,1,2,3,4,5],[3,6,7],[2,8]]

],

"天蝎座":[

[[0.17,0.50],[0.28,0.63],[0.19,0.70],[0.28,0.78],[0.41,0.77],[0.49,0.72],[0.57,0.55],[0.59,0.44],[0.69,0.31],[0.74,0.21],[0.82,0.29],[0.79,0.44],[0.73,0.50],[0.38,0.47]],

[[0,1,2,3,4,5,6,7,8,9,10,11,12],[1,13],[8,11]]

],

"射手座":[

[[0.22, 0.66],[0.24,0.51],[0.45,0.40],[0.54,0.37],[0.59,0.43],[0.66,0.50],[0.63,0.60],[0.66,0.67],[0.74,0.53],[0.77,0.39],[0.49,0.47],[0.29,0.68],[0.30,0.78],[0.48,0.21],[0.52,0.27],[0.59,0.29]],

[[0,1,2,3,4,5,6,7,8,9],[2,10,11,12],[10,4],[13,14,15,3],[14,3]]

]

};

/*根据出生日期获取星座信息*/

function getStarSign(ts){

var d=new Date(ts),sign=d.getMonth()*100+d.getDate();

switch(true)

{

case sign<20:

return "摩羯座";

case sign<119:

return "水瓶座";

case sign<221:

return "双鱼座";

case sign<320:

return "白羊座";

case sign<421:

return "金牛座";

case sign<522:

return "双子座";

case sign<623:

return "巨蟹座";

case sign<723:

return "狮子座";

case sign<823:

return "处女座";

case sign<923:

return "天秤座";

case sign<1022:

return "天蝎座";

case sign<1122:

return "射手座";

default:

return "摩羯座";

}

}

/*绘制星座*/

function constellation(ctx,ary,w,h){

/*创建线条*/

var points=ary[0], lines=ary[1];

ctx.strokeStyle="#FFF";

var len=lines.length,i,ii,line,point;

ctx.beginPath();

while(len--)

{

i=1;

line=lines[len];

ii=line.length;

point=points[line[0]];

ctx.moveTo(point[0]*w,point[1]*h);

for(;i

point=points[line[i]];

ctx.lineTo(point[0]*w,point[1]*h);

}

}

ctx.stroke();

/*创建小圆*/

var cur;

i=0;

ii=points.length;

for(;i

cur=points[i];

new Circle(cur[0]*w,cur[1]*h).draw();//new出实例

}

}

/*创建小圆的构造函数*/

function Circle(x,y,r){

this.x=x;

this.y=y;

this.r=r||Math.round(Math.random()*8+4);

}

Circle.prototype={

draw:function(){

ctx.beginPath();

g1=ctx.createRadialGradient(this.x,this.y,Math.round(Math.random()*1+1),this.x,this.y,Math.round(Math.random()*3+6));

g1.addColorStop(0,'rgba(255,255,255,.9)');

g1.addColorStop(1,'rgba(0,0,0,.1)');

ctx.arc(this.x,this.y,this.r,0,Math.PI*2,true);

ctx.fillStyle =g1;

ctx.closePath();

ctx.fill();

return this;

}};

/*点击‘展示我的星空图'按钮*/

btn.οnclick=function(e){

clearInterval(timer);

e.preventDefault();

if (!birth.value){

alert("请选择您的出生日期");

}else{

canvas.style.display="block";

date = new Date(birth.value.replace(/-/g,'/')).getTime();

timer=setInterval(function(){

ctx.clearRect(0,0,canvas.width,canvas.height);

ctx.strokeText(getStarSign(date), 50, 50);

constellation(ctx,star[getStarSign(date)],canvas.width,canvas.height);

},500);

}

};

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程圈!

涌html编写星空图,canvas实现十二星座星空图相关推荐

  1. 前端教程:用 Canvas 编织璀璨星空图

    是不是还蛮酷的呢?利用周末时间我们来学习并实现一下,本文我们就来一点一点分析怎么实现它! 分析 首先我们看看这个效果具体有哪些要点.首先,这么炫酷的效果肯定是要用到 Canvas 了,每个星星可以看作 ...

  2. 用 Canvas 编织璀璨星空图

    先来看看最终的效果: GitHub项目: CyandevToys / ParticleWeb 是不是还蛮酷的呢?本文我们就来一点一点分析怎么实现它! 分析 首先我们看看这个效果具体有那些要点.首先,这 ...

  3. html编写田字格,canvas画田字格与米字格

    #div1 { width: 400px; height: 400px; } 转载自canvas画田字格与米字格 你的浏览器不支持canvas! var oCanvas = document.getE ...

  4. html5 canvas 版 hello world! 暨haXe简介

    没想到我的第一个移动项目会是 html5 项目. 前一阵给一海外客户开发了Flash 版的电子杂志,客户还需要 ipad 版的.我最开始提出这样一种解决方案:在现有Flash程序基础上,使用AIR 2 ...

  5. Canvas圆形时钟

      今天带来一个圆形时钟,用JQ编写的Canvas 代码.Canvas 的神奇之处就在于,可以自行绘制图片不需要外部引入,当你深入了解这项技术的时候,你也会忍不住赞叹他的神奇之处.   虽然我一再强调 ...

  6. WPF 蒙罩层 LoadingPage

    WPF 蒙罩层 LoadingPage 原文:WPF 蒙罩层 LoadingPage WPF 蒙罩层 LoadingPage 前言 无论是在PC客户端,移动端,网站,在遇到长时间处理的时候都会需要用到 ...

  7. 使用 MIDP 底层用户接口 API

    在J2ME中,Profiles是用于定义用户接口API的.MIDP定义了两种这类API,被称为高层API和底层API,高层API要求你使用面向事务的抽象来定义用户接口做什么.你并没有对屏幕上所画的东西 ...

  8. 【前端开发】Vue + Fabric.js + Element-plus 实现简易的H5可视化图片编辑器

    目录 前言 一 .实战效果 技术选型 核心功能 代码实现 二.Fabric.js 简介 安装 创建画布 监听画布事件 鼠标事件监听 设置画布背景 设置背景颜色 向画布添加图层对象 获取当前选中的对象 ...

  9. 【MPS】Jetbrains MPS入门案例Shapes(四)

    上一篇文章介绍了MPS入门案例中添加颜色属性的过程,这篇文章将介绍如何将实例模型转换为Java代码,并且通过调用Java图形化编程库来绘制图形的方法,主要是通过MPS的生成器Generator来生成J ...

最新文章

  1. Windows下搭建SVN傻瓜式教程
  2. Springboot 抛出Failed to determine a suitable driver class异常原因
  3. android ffmpeg 简书,偶遇FFmpeg(三)——Android集成
  4. 分布式缓存服务器设计原理
  5. 10、java中文件的抽象表示
  6. mysql事务与jdbc事务_事务(mysql事务、jdbc事务)
  7. java 矩阵转置_图解利用Java实现数组转置
  8. 在中国程序员能不能干一辈子?水平差距再大也逃不掉这个噩梦吗?
  9. php计算百分比加成_百分比计算器
  10. 第一范式转化为第二范式_深度解读《中国智能经济发展白皮书》:AI为核心驱动力,百度给出智能范式...
  11. 解决 fatal: unable to access xxx: Encountered end of
  12. 智慧酒店雷达传感方案,人体存在感应技术应用,雷达探测模块
  13. 利用计算机画统计图教学设计,小学数学人教版四年级上册《条形统计图》教学设计及反思...
  14. 如何理解上下文有关文法(1型)和上下文无关文法(2型)
  15. 计算机基础之二进制详解(二)
  16. nginx网页支持WebP图片
  17. 处理器的排名_齐齐哈尔LPCVD尾气处理器排名推荐
  18. 组装一台计算机需要哪些硬件(写出配置),电脑组装知识网组装电脑配置单中都有哪些配置组装电脑需要的电脑硬件...
  19. 寂寞是因为思念谁(校园民谣)铃声 寂寞是因为思念谁(校园民谣)...
  20. 【答学员问】 考研还是就业:如何选择未来职业道路?

热门文章

  1. 通过xsd校验xml
  2. 【AIOQuant量化交易框架】第1讲-高频交易介绍
  3. 用EasyExcel对excel表格进行读写操作
  4. 安全杠杆炒股平台有什么特征?
  5. 中国邮路问题编程求解
  6. voltDB官方文档第三章翻译
  7. 《Contrast Limited Adaptive Histogram Equalization》自译
  8. <map object at 0x0000026B2959DA20>如何解决
  9. 教你用CHARIOT测量网络带宽、网速
  10. 虚拟机安装mysql及数据库基础知识一