整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          手把手教你用Javascript制作隨機星星效果圖

          、前言

          在瀏覽一些圖片網(wǎng)站的時候,經(jīng)常會看到很多的漂亮的星空圖,比如,下面的圖片。其實這種星星圖片的效果,也可以通過html+css樣式和js的方式來實現(xiàn)。今天教大家如何實現(xiàn)星星圖的效果。


          二、項目準備

          軟件:Dreamweaver


          三、實現(xiàn)的目標

          每次刷新產(chǎn)生隨機的星星個數(shù)。顯示畫布上。


          四、項目實現(xiàn)

          1. 創(chuàng)建canvas畫布

          <body>
              <canvas id='canvas'></canvas>
          </body>

          2. 添加css樣式。

          給canva 畫布加上邊框,方便觀察。

          <style type="text/css">
              canvas{
                  border:2px solid #f00;
          }
          </style>

          3.添加js樣式

          3.1 設(shè)置canvas畫布大小 ,定義需要變量。

          <script type="text/javascript">
               var _canvas=document.getElementById("canvas")
              _canvas.width=500;
              _canvas.height=500;
          var r,g ,b,a;
          </script>

          3.2 產(chǎn)生隨機圓。

          for (var j = 0; j < 150; j++) {
                  arc.x=Math.floor(Math.random()*_canvas.width);
                  arc.y=Math.floor(Math.random()*_canvas.height);
                  arc.r=Math.floor(Math.random()*31+10);
                  r=Math.ceil(Math.random()*256);
                  g=Math.ceil(Math.random()*256);
                  b=Math.ceil(Math.random()*256);
                  a=Math.random();
          
          
                  darw();
          }

          3.3 定義draw()方法,通過畫星星公式,將圓形轉(zhuǎn)換成星星狀 for 循環(huán)產(chǎn)生隨機位置星星。

          如何畫星星?(公式解析)(圖片來源百度)


          星星有內(nèi)切圓和外切圓,每兩個點之間的角度是固定的,因此可得到星星的每個點的坐標,畫出星星。


          /* 隨機產(chǎn)生星星*/
          for (var i = 0; i < 5; i++) {
          
          
                  _ctx.lineTo(Math.cos((18+72*i)/180*Math.PI)*arc.r+arc.x, -Math.sin((18+72*i)/180*Math.PI)*arc.r+arc.y);
          
          
                   _ctx.lineTo(Math.cos((54+72*i)/180*Math.PI)*arc.r/2+arc.x, -Math.sin((54+72*i)/180*Math.PI)*arc.r/2+arc.y);
               
          }

          3.4 隨機產(chǎn)生顏色。

          Math函數(shù)隨機產(chǎn)生0-225的RGB值。

          /* 隨機顏色*/ 
              _ctx.fillStyle="rgba(" + r + "," + g + "," + b + "," + a + ")"; 
              _ctx.fill();
                  _ctx.strokeStyle="rgba(" + r + "," + g + "," + b + "," + a + ")";
                _ctx.stroke();
                }

          3.5. 調(diào)用draw()方法實現(xiàn)功能。

          darw();


          五、效果展示

          1、點擊f12運行到瀏覽器

          2、每次刷新網(wǎng)頁,隨機產(chǎn)生不一樣的星星和隨機顏色。


          六、總結(jié)

          1. 本項目利用canvas畫布,實現(xiàn)星星圖的效果,以及在運用javascript產(chǎn)生星星效果時,遇到的一些難點進行了分析及提供解決方案。
          2. 歡迎大家積極嘗試,有時候看到別人實現(xiàn)起來很簡單,但是到自己動手實現(xiàn)的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。
          3. 代碼很簡單,希望對你有所啟發(fā)。

          想學(xué)習(xí)更多前端、Python爬蟲、大數(shù)據(jù)等計算機知識,請前往:http://pdcfighting.com/

          們可以運用canvas在瀏覽器中繪制出各種漂亮的圖形,僅需要確定圖形的各個坐標點即可完成我們所需要的任務(wù)。如果我們要想畫出精確的圖案,就需要精確的計算出每個坐標點。下面給出了畫五角星的基本方法(僅供參考),只要掌握了步驟,準確計算出坐標點,就可以繪制出比下面的這個圖好看,那就先看看步驟和代碼是怎樣實現(xiàn)的吧。

          一、Canvas繪制五角星的步驟

           <!--<!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>繪制五角星</title> 
          </head>
          <body>
          <canvas id="demo">
          您的瀏覽器不支持 HTML5 canvas 標簽。
          </canvas>
          <script>
          var canvas = document.getElementById("demo");
          canvas.width = 500;
          canvas.height = 500;
          canvas.style.border = "1px solid pink";
          var ctx = canvas.getContext("2d");
          // 找到起始點
          ctx.moveTo(0, 150);
          // 到達結(jié)束點
          ctx.lineTo(500, 150);
          ctx.lineTo(0,500);
          ctx.lineTo(250,0);
          ctx.lineTo(500,500);
          // ctx.lineTo(0, 100);
          // 閉合線段
          ctx.closePath();
          // 設(shè)置線段描邊的顏色
          ctx.strokeStyle = "red";
          // 設(shè)置描邊的寬度
          ctx.lineWidth = 2;
          // 將線段描邊
          ctx.stroke();
          // 設(shè)置填充的屬性值
          ctx.fillStyle = "yellow";
          // 設(shè)置填充的顏色
          ctx.fill();
          </script>
          </body>
          </html>-->

          二、Canvas繪制出的五角星圖形

          隨著HTML5的火熱,越來越多的人投入到HTML5開發(fā)中了,canvas作為HTML5中比較重要的一個元素,在很多官網(wǎng)的主頁面中被使用到。今天我們一起來看看如何使用canvas畫出一個夢幻的星空背景,還會有流星運動。

          本文的代碼已經(jīng)放到Github上了,感興趣的可以自取,Github地址如下。

          https://github.com/zhouxiongking/article-pages/blob/master/articles/starry/starry.html

          HTML5

          實現(xiàn)效果

          首先我們來看看通過canvas實現(xiàn)的星空效果圖,如下所示。

          效果圖

          代碼實現(xiàn)

          接下來我們看看這個效果是如何通過代碼一步步實現(xiàn)的。

          首先來看看頁面上的HTML代碼,只有一個Div元素。

          HTML代碼

          Javascript代碼

          首先我們需要定義一些常量,比如畫布的寬和高,星星數(shù)量,流星個數(shù)。在這個星空中流星其實是星星的一個,只是添加了動態(tài)效果。

          頁面初始化

          然后是設(shè)定一個定時器,通過一段隨機時間生成一個流星的索引號。

          流星索引號

          緊接著來看看生成一個星星的方法,該方法返回一個星星的各項參數(shù),包括x,y軸坐標,透明度,x,y軸偏移量。

          生成星星的參數(shù)

          然后是最重要的render方法,通過該方法可以將星星渲染至畫布上,我們將這個方法拆開看,首先是對流星的繪制,流星索引號通過上面metor方法獲得。

          畫流星

          然后是對于星星各項參數(shù)的處理,比如有的星星生成的點坐標超出了屏幕寬高,有的透明度是負數(shù),都要將其處理成正常參數(shù)。

          各項參數(shù)判斷

          最后是在畫布中進行繪制。

          畫布繪制

          至此,這個畫面效果的講解完畢,如果代碼正確的話,就可以看到文中出現(xiàn)的效果圖。

          結(jié)束語

          今天這篇文章主要是借助HTML5中的canvas畫出了一個夢幻星空的效果,你學(xué)會了嗎?


          主站蜘蛛池模板: 久久精品无码一区二区无码| 北岛玲在线一区二区| 鲁丝丝国产一区二区| 中文字幕aⅴ人妻一区二区| 人妻互换精品一区二区| 日韩电影一区二区三区| 日韩美女在线观看一区| 日韩免费视频一区二区| 在线观看国产一区| 亚洲一区二区高清| 国产成人高清视频一区二区| 国产乱码精品一区二区三区| 国产电影一区二区| 日本片免费观看一区二区| 一区二区三区观看免费中文视频在线播放 | 99无码人妻一区二区三区免费 | 亚洲熟妇av一区| 奇米精品一区二区三区在线观看| 无码人妻久久一区二区三区蜜桃 | 在线观看日韩一区| 精品午夜福利无人区乱码一区| 少妇精品无码一区二区三区| 无码人妻精品一区二区| 国产激情з∠视频一区二区| 亚洲无人区一区二区三区| 中文字幕色AV一区二区三区 | 亚洲日本va一区二区三区| 日韩毛片基地一区二区三区| 久久毛片一区二区| 精品免费国产一区二区| 日本一区二区三区日本免费| 国产在线第一区二区三区| 波多野结衣中文一区| 一区二区三区日本视频| 99精品国产一区二区三区| 久久久91精品国产一区二区三区| 日本免费电影一区二区| 精品无码国产一区二区三区AV | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲国产精品一区二区久久hs | 无码一区二区三区视频|