最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

canvas實現(xiàn)十二星座星空圖

 更新時間:2017年02月14日 08:37:15   作者:herbone  
本文主要分享了canvas實現(xiàn)十二星座星空圖的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧

效果如下:

代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>canvas星座</title>
 <style>
 * {
  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;
 }
 </style>
</head>
<body>
<div id="box">
 <p>請選擇您的出生日期</p>
 <input type="date" id="birth"><input type="button" id="btn" value="展示我的星空圖">
</div>
 <canvas id="canvas" width="550" height="550">你的瀏覽器不支持canvas</canvas>
<script type="text/javascript">
 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]]
 ]
 };
 /*根據(jù)出生日期獲取星座信息*/
 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){
 /*創(chuàng)建線條*/
 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<ii;i++){
  point=points[line[i]];
  ctx.lineTo(point[0]*w,point[1]*h);
  }
 }
 ctx.stroke();
 /*創(chuàng)建小圓*/
 var cur;
 i=0;
 ii=points.length;
 for(;i<ii;i++){
  cur=points[i];
  new Circle(cur[0]*w,cur[1]*h).draw();//new出實例
 }
 }
 /*創(chuàng)建小圓的構造函數(shù)*/
 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.onclick=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);
 }
 };
</script>
</body>
</html>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • js實現(xiàn)導航欄上下動畫效果

    js實現(xiàn)導航欄上下動畫效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)導航欄上下動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript html5 canvas繪制時鐘效果

    JavaScript html5 canvas繪制時鐘效果

    這篇文章主要介紹了JavaScript html5繪制時鐘效果的相關資料,使用HTML5的canvas標簽和Javascript腳本,模擬顯示了一個時鐘,感興趣的小伙伴們可以參考一下
    2016-03-03
  • JavaScript對象封裝的簡單實現(xiàn)方法(3種方法)

    JavaScript對象封裝的簡單實現(xiàn)方法(3種方法)

    這篇文章主要介紹了JavaScript對象封裝的簡單實現(xiàn)方法,結合實例形式分析了3種簡單實現(xiàn)方法與相關注意事項,需要的朋友可以參考下
    2017-01-01
  • Javascript學習之談談JS的全局變量跟局部變量(推薦)

    Javascript學習之談談JS的全局變量跟局部變量(推薦)

    這篇文章主要介紹了Javascript學習之談談JS的全局變量跟局部變量雖然腳本之家小編以前發(fā)過,但還是這篇文章整理的比較好,需要的朋友可以參考一下
    2016-08-08
  • JavaScript中操作字符串小結

    JavaScript中操作字符串小結

    字符串在javascript中幾乎無處不在,在你處理用戶的輸入數(shù)據(jù)的時候,在讀取或設置DOM對象的屬性時,在操作cookie時,當然還有更多...。JavaScript的核心部分提供了一組屬性和方法用于通用的字符串操作,如分割字符串,改變字符串的大小寫,操作子字符串等。
    2015-05-05
  • 微信小程序關鍵字變色實現(xiàn)代碼實例

    微信小程序關鍵字變色實現(xiàn)代碼實例

    這篇文章主要介紹了微信小程序關鍵字變色實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • ESLint的簡單使用方法(js,ts,vue)

    ESLint的簡單使用方法(js,ts,vue)

    ESLint是一個用于統(tǒng)一團隊編碼規(guī)范、減少代碼錯誤的工具,它可以手動安裝并配置,支持JavaScript、TypeScript和Vue.js等語言,文章詳細介紹了如何手動下載和配置ESLint,需要的朋友可以參考下
    2025-01-01
  • js動態(tài)引入的四種方法

    js動態(tài)引入的四種方法

    下面小編就為大家?guī)硪黄P于js動態(tài)引入四種方式的實例代碼,具有很好的參考價值,分享給大家一起跟隨小編過來看看吧
    2018-05-05
  • JavaScript動態(tài)加載樣式表的方法

    JavaScript動態(tài)加載樣式表的方法

    這篇文章主要介紹了JavaScript動態(tài)加載樣式表的方法,涉及javascript操作樣式表的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • JS代碼放在head和body中的區(qū)別分析

    JS代碼放在head和body中的區(qū)別分析

    放在head中的JS代碼會在頁面加載完成之前就讀取,而放在body中的JS代碼,會在整個頁面加載完成之后讀取
    2011-12-12

最新評論

兴国县| 隆安县| 泸溪县| 呈贡县| 科尔| 芜湖县| 昆山市| 白山市| 望江县| 彭阳县| 房产| 忻城县| 来安县| 高青县| 温宿县| 鄂州市| 启东市| 宿松县| 凤城市| 永兴县| 辽阳市| 台北县| 亳州市| 定日县| 五原县| 九江县| 葫芦岛市| 渝中区| 阜南县| 仙居县| 信宜市| 乐东| 泰来县| 开鲁县| 新邵县| 兴国县| 汉阴县| 松桃| 成武县| 康平县| 新绛县|