实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353

精品課程

html流星雨代碼 html流星雨代碼詳解

發(fā)布: Java培訓問答 發(fā)布時間:2021-08-24 16:14:25

推薦答案
品牌型號:聯(lián)想小新Pro13/系統(tǒng)版本:windows10

基于HTML+CSS+JS實現(xiàn)流星雨特效實現(xiàn),可用于移動開發(fā)以及網(wǎng)站背景圖,具體代碼如下:

  1. <!doctype html> 
  2. <html> 
  3.     <head> 
  4.         <meta charset="utf-8" /> 
  5.         <title>流星雨</title> 
  6.         <meta name="keywords" content="關鍵詞,關鍵字"
  7.         <meta name="description" content="描述信息"
  8.         <style> 
  9.             body { 
  10.                 margin: 0; 
  11.                 overflow: hidden; 
  12.             } 
  13.         </style> 
  14.     </head> 
  15.   
  16.     <body> 
  17.   
  18.         <!-- 
  19.             <canvas>畫布 畫板 畫畫的本子 
  20.         --> 
  21.         <canvas width=400 height=400 style="background:#000000;" id="canvas"></canvas> 
  22.   
  23.         <!-- 
  24.             javascript 
  25.             畫筆 
  26.         -->  
  27.         <script> 
  28.                      
  29.             //獲取畫板 
  30.             //doccument 當前文檔 
  31.             //getElement 獲取一個標簽 
  32.             //ById 通過Id名稱的方式 
  33.             //var 聲明一片空間 
  34.             //var canvas 聲明一片空間的名字叫做canvas 
  35.             var canvas = document.getElementById("canvas"); 
  36.             //獲取畫板權限 上下文 
  37.             var ctx = canvas.getContext("2d"); 
  38.             //讓畫板的大小等于屏幕的大小 
  39.             /* 
  40.                 思路: 
  41.                     1.獲取屏幕對象 
  42.                     2.獲取屏幕的尺寸 
  43.                     3.屏幕的尺寸賦值給畫板 
  44.             */ 
  45.             //獲取屏幕對象 
  46.             var s = window.screen; 
  47.             //獲取屏幕的寬度和高度 
  48.             var w = s.width; 
  49.             var h = s.height; 
  50.             //設置畫板的大小 
  51.             canvas.width = w; 
  52.             canvas.height = h; 
  53.   
  54.             //設置文字大小  
  55.             var fontSize = 14; 
  56.             //計算一行有多少個文字 取整數(shù) 向下取整 
  57.             var clos = Math.floor(w/fontSize); 
  58.             //思考每一個字的坐標 
  59.             //創(chuàng)建數(shù)組把clos 個 0 (y坐標存儲起來) 
  60.             var drops = []; 
  61.             var str = "qwertyuiopasdfghjklzxcvbnm"
  62.             //往數(shù)組里面添加 clos 個 0 
  63.             for(var i = 0;i<clos;i++) { 
  64.                 drops.push(0); 
  65.             } 
  66.   
  67.             //繪制文字 
  68.             function drawString() { 
  69.                 //給矩形設置填充色 
  70.                 ctx.fillStyle="rgba(0,0,0,0.05)" 
  71.                 //繪制一個矩形 
  72.                 ctx.fillRect(0,0,w,h); 
  73.   
  74.                 //添加文字樣式 
  75.                 ctx.font = "600 "+fontSize+"px 微軟雅黑"
  76.                 //設置文字顏色 
  77.                 ctx.fillStyle = "#00ff00"
  78.   
  79.                 for(var i = 0;i<clos;i++) { 
  80.                     //x坐標 
  81.                     var x = i*fontSize; 
  82.                     //y坐標 
  83.                     var y = drops[i]*fontSize; 
  84.                     //設置繪制文字 
  85.                     ctx.fillText(str[Math.floor(Math.random()*str.length)],x,y); 
  86.                     if(y>h&&Math.random()>0.99){ 
  87.                         drops[i] = 0; 
  88.                     } 
  89.                     drops[i]++; 
  90.                 } 
  91.                      
  92.             } 
  93.             //定義一個定時器,每隔30毫秒執(zhí)行一次 
  94.             setInterval(drawString,30); 
  95.         </script> 
  96.     </body> 
  97. </html> 
其它答案
牛仔很忙2020-06-22 18:56:36
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.     <meta charset="utf-8"
  5.     <title>流星雨</title> 
  6.     <script> 
  7.         var context; 
  8.         var arr = new Array(); 
  9.         var starCount = 800; 
  10.         var rains = new Array(); 
  11.         var rainCount = 20; 
  12.  
  13.         function init() { 
  14.             var stars = document.getElementById("stars"); 
  15.             windowWidth = window.innerWidth; //當前的窗口的高度 
  16.             stars.width = windowWidth; 
  17.             stars.height = window.innerHeight; 
  18.             context = stars.getContext("2d"); 
  19.         } 
  20.  
  21.         //創(chuàng)建一個星星對象 
  22.         var Star = function () { 
  23.             this.x = windowWidth * Math.random();//橫坐標 
  24.             this.y = 5000 * Math.random();//縱坐標 
  25.             this.text = ".";//文本 
  26.             this.color = "white";//顏色 
  27.             this.getColor = function () { 
  28.                 var _r = Math.random(); 
  29.                 if (_r < 0.5) { 
  30.                     this.color = "#333"
  31.                 } else { 
  32.                     this.color = "white"
  33.                 } 
  34.             } 
  35. //初始化 
  36.             this.init = function () { 
  37.                 this.getColor(); 
  38.             } 
  39. //繪制 
  40.             this.draw = function () { 
  41.                 context.fillStyle = this.color; 
  42.                 context.fillText(this.text, this.x, this.y); 
  43.             } 
  44.         } 
  45.  
  46.         //畫月亮 
  47.         function drawMoon() { 
  48.             var moon = new Image(); 
  49.             moon.src = "./images/moon.jpg" 
  50.             context.drawImage(moon, -5, -10); 
  51.         } 
  52.  
  53.         //頁面加載的時候 
  54.         window.onload = function () { 
  55.             init(); 
  56. //畫星星 
  57.             for (var i = 0; i < starCount; i++) { 
  58.                 var star = new Star(); 
  59.                 star.init(); 
  60.                 star.draw(); 
  61.                 arr.push(star); 
  62.             } 
  63. //畫流星 
  64.             for (var i = 0; i < rainCount; i++) { 
  65.                 var rain = new MeteorRain(); 
  66.                 rain.init(); 
  67.                 rain.draw(); 
  68.                 rains.push(rain); 
  69.             } 
  70.             drawMoon();//繪制月亮 
  71.             playStars();//繪制閃動的星星 
  72.             playRains();//繪制流星 
  73.  
  74.         } 
  75.  
  76.         //星星閃起來 
  77.         function playStars() { 
  78.             for (var n = 0; n < starCount; n++) { 
  79.                 arr[n].getColor(); 
  80.                 arr[n].draw(); 
  81.             } 
  82.  
  83.             setTimeout("playStars()", 100); 
  84.         } 
  85.  
  86.         /*流星雨開始*/ 
  87.         var MeteorRain = function () { 
  88.             this.x = -1; 
  89.             this.y = -1; 
  90.             this.length = -1;//長度 
  91.             this.angle = 30; //傾斜角度 
  92.             this.width = -1;//寬度 
  93.             this.height = -1;//高度 
  94.             this.speed = 1;//速度 
  95.             this.offset_x = -1;//橫軸移動偏移量 
  96.             this.offset_y = -1;//縱軸移動偏移量 
  97.             this.alpha = 1; //透明度 
  98.             this.color1 = "";//流星的色彩 
  99.             this.color2 = ""//流星的色彩 
  100.             /****************初始化函數(shù)********************/ 
  101.             this.init = function () //初始化 
  102.             { 
  103.                 this.getPos(); 
  104.                 this.alpha = 1;//透明度 
  105.                 this.getRandomColor(); 
  106. //最小長度,最大長度 
  107.                 var x = Math.random() * 80 + 150; 
  108.                 this.length = Math.ceil(x); 
  109. // x = Math.random()*10+30; 
  110.                 this.angle = 30; //流星傾斜角 
  111.                 x = Math.random() + 0.5; 
  112.                 this.speed = Math.ceil(x); //流星的速度 
  113.                 var cos = Math.cos(this.angle * 3.14 / 180); 
  114.                 var sin = Math.sin(this.angle * 3.14 / 180); 
  115.                 this.width = this.length * cos; //流星所占寬度 
  116.                 this.height = this.length * sin;//流星所占高度 
  117.                 this.offset_x = this.speed * cos; 
  118.                 this.offset_y = this.speed * sin; 
  119.             } 
  120.             /**************獲取隨機顏色函數(shù)*****************/ 
  121.             this.getRandomColor = function () { 
  122.                 var a = Math.ceil(255 - 240 * Math.random()); 
  123. //中段顏色 
  124.                 this.color1 = "rgba(" + a + "," + a + "," + a + ",1)"
  125. //結束顏色 
  126.                 this.color2 = "black"
  127.             } 
  128.             /***************重新計算流星坐標的函數(shù)******************/ 
  129.             this.countPos = function ()// 
  130.             { 
  131. //往左下移動,x減少,y增加 
  132.                 this.x = this.x - this.offset_x; 
  133.                 this.y = this.y + this.offset_y; 
  134.             } 
  135.             /*****************獲取隨機坐標的函數(shù)*****************/ 
  136.             this.getPos = function () // 
  137.             { 
  138. //橫坐標200--1200 
  139.                 this.x = Math.random() * window.innerWidth; //窗口高度 
  140. //縱坐標小于600 
  141.                 this.y = Math.random() * window.innerHeight; //窗口寬度 
  142.             } 
  143.             /****繪制流星***************************/ 
  144.             this.draw = function () //繪制一個流星的函數(shù) 
  145.             { 
  146.                 context.save(); 
  147.                 context.beginPath(); 
  148.                 context.lineWidth = 1; //寬度 
  149.                 context.globalAlpha = this.alpha; //設置透明度 
  150. //創(chuàng)建橫向漸變顏色,起點坐標至終點坐標 
  151.                 var line = context.createLinearGradient(this.x, this.y, 
  152.                     this.x + this.width, 
  153.                     this.y - this.height); 
  154. //分段設置顏色 
  155.                 line.addColorStop(0, "white"); 
  156.                 line.addColorStop(0.3, this.color1); 
  157.                 line.addColorStop(0.6, this.color2); 
  158.                 context.strokeStyle = line; 
  159. //起點 
  160.                 context.moveTo(this.x, this.y); 
  161. //終點 
  162.                 context.lineTo(this.x + this.width, this.y - this.height); 
  163.                 context.closePath(); 
  164.                 context.stroke(); 
  165.                 context.restore(); 
  166.             } 
  167.             this.move = function () { 
  168. //清空流星像素 
  169.                 var x = this.x + this.width - this.offset_x; 
  170.                 var y = this.y - this.height; 
  171.                 context.clearRect(x - 3, y - 3, this.offset_x + 5, this.offset_y + 5); 
  172. // context.strokeStyle="red"; 
  173. // context.strokeRect(x,y-1,this.offset_x+1,this.offset_y+1); 
  174. //重新計算位置,往左下移動 
  175.                 this.countPos(); 
  176. //透明度增加 
  177.                 this.alpha -= 0.002; 
  178. //重繪 
  179.                 this.draw(); 
  180.             } 
  181.         } 
  182.  
  183.         //繪制流星 
  184.         function playRains() { 
  185.  
  186.             for (var n = 0; n < rainCount; n++) { 
  187.                 var rain = rains[n]; 
  188.                 rain.move();//移動 
  189.                 if (rain.y > window.innerHeight) {//超出界限后重來 
  190.                     context.clearRect(rain.x, rain.y - rain.height, rain.width, rain.height); 
  191.                     rains[n] = new MeteorRain(); 
  192.                     rains[n].init(); 
  193.                 } 
  194.             } 
  195.             setTimeout("playRains()", 2); 
  196.         } 
  197.  
  198.         /*流星雨結束*/ 
  199.     </script> 
  200.     <style type="text/css"
  201.         body { 
  202.             background-color: black; 
  203.         } 
  204.  
  205.         body, html { 
  206.             width: 100%; 
  207.             height: 100%; 
  208.             overflow: hidden; 
  209.         } 
  210.     </style> 
  211. </head> 
  212. <body> 
  213. <canvas id="stars"></canvas> 
  214. </body> 
  215. </html> 

中公旗下IT培訓品牌

  • 中公教育品牌

     中公教育是一家中國領先的全品類職業(yè)教育機構,提供超過100個品類的綜合職業(yè)就業(yè)培訓服務。公司在全國超過1000個直營網(wǎng)點展開經(jīng)營,深度覆蓋300多個地級市,并正在快速向數(shù)千個縣城和高校擴張。

  • 完善就業(yè)體系

    通過階段性授課機制,和每階段的定期考核,先讓學員能夠學會所學內(nèi)容,才能找打合適工作。最后一個階段為就業(yè)課程,從技術和面試兩個方面加深就業(yè)能力,并且還有不定期的雙選會供大家選擇。

  • 全程面授+實戰(zhàn)技術

    線下課程全程是師資面對面教學,不會存在上課只對著大屏幕上課的情況,有問題都可以在課上得到解答。并且優(yōu)就業(yè)通過自主研發(fā)大綱和學習路線,并且定期更新課程所學技術,讓大家所學技術不落伍。

中公優(yōu)就業(yè)專業(yè)職業(yè)規(guī)劃老師

為您詳細答疑解惑,更能領取免費課程

相關問題

更多課程

專業(yè)課程老師將第一時間為您解答

立即答疑
修改
優(yōu)就業(yè):ujiuye

關注中公優(yōu)就業(yè)官方微信

  • 關注微信回復關鍵詞“大禮包”,領80G學習資料
主站蜘蛛池模板: 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 书信之家_书信标准模板范文大全| 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 氧化铁红厂家-淄博宗昂化工|