一个html5流星雨源码

流星会随着鼠标的方向划过,按紧鼠标左键可以增长流星的尾巴。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="zh-CN"> <head> <title>流星雨</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta http-equiv="content-language" content="zh-CN"> <style type="text/css"> body {margin:0;padding:0;background-color:#000000;font-size:0;overflow:hidden} div {margin:0;padding:0;position:absolute;font-size:0;overflow:hidden} canvas{background-color:#000000;overflow:hidden} </style> </head> <script type="text/javascript"> function $i(id) { return document.getElementById(id); } function $r(parent,child) { (document.getElementById(parent)).removeChild(document.getElementById(child)); } function $t(name) { return document.getElementsByTagName(name); } function $c(code) { return String.fromCharCode(code); } function $h(value) { return ('0'+Math.max(0,Math.min(255,Math.round(value))).toString(16)).slice(-2); } function _i(id,value) { $t('div')[id].innerHTML+=value; } function _h(value) { return !hires?value:Math.round(value/2); } function get_screen_size() { var w=document.documentElement.clientWidth; var h=document.documentElement.clientHeight; return Array(w,h); } var url=document.location.href; var flag=true; var test=true; var n=parseInt((url.indexOf('n=')!=-1)?url.substring(url.indexOf('n=')+2,((url.substring(url.indexOf('n=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('n=')+2+(url.substring(url.indexOf('n=')+2,url.length)).indexOf('&'):url.length):512); var w=0; var h=0; var x=0; var y=0; var z=0; var star_color_ratio=0; var star_x_save,star_y_save; var star_ratio=256; var star_speed=4; var star_speed_save=0; var star=new Array(n); var color; var opacity=0.1; var cursor_x=0; var cursor_y=0; var mouse_x=0; var mouse_y=0; var canvas_x=0; var canvas_y=0; var canvas_w=0; var canvas_h=0; var context; var key; var ctrl; var timeout; var fps=0; function init() { var a=0; for(var i=0;i<n;i++) { star[i]=new Array(5); star[i][0]=Math.random()*w*2-x*2; star[i][1]=Math.random()*h*2-y*2; star[i][2]=Math.round(Math.random()*z); star[i][3]=0; star[i][4]=0; } var starfield=$i('starfield'); starfield.style.position='absolute'; starfield.width=w; starfield.height=h; context=starfield.getContext('2d'); context.fillStyle='rgb(0,0,0)'; context.strokeStyle='rgb(255,255,255)'; var adsense=$i('adsense'); adsense.style.left=Math.round((w-728)/2)+'px'; adsense.style.top=(h-15)+'px'; adsense.style.width=728+'px'; adsense.style.height=15+'px'; adsense.style.display='block'; } function anim() { mouse_x=cursor_x-x; mouse_y=cursor_y-y; context.fillRect(0,0,w,h); for(var i=0;i<n;i++) { test=true; star_x_save=star[i][3]; star_y_save=star[i][4]; star[i][0]+=mouse_x>>4; if(star[i][0]>x<<1) { star[i][0]-=w<<1; test=false; } if(star[i][0]<-x<<1) { star[i][0]+=w<<1; test=false; } star[i][1]+=mouse_y>>4; if(star[i][1]>y<<1) { star[i][1]-=h<<1; test=false; } if(star[i][1]<-y<<1) { star[i][1]+=h<<1; test=false; } star[i][2]-=star_speed; if(star[i][2]>z) { star[i][2]-=z; test=false; } if(star[i][2]<0) { star[i][2]+=z; test=false; } star[i][3]=x+(star[i][0]/star[i][2])*star_ratio; star[i][4]=y+(star[i][1]/star[i][2])*star_ratio; if(star_x_save>0&&star_x_save<w&&star_y_save>0&&star_y_save<h&&test) { context.lineWidth=(1-star_color_ratio*star[i][2])*2; context.beginPath(); context.moveTo(star_x_save,star_y_save); context.lineTo(star[i][3],star[i][4]); context.stroke(); context.closePath(); } } timeout=setTimeout('anim()',fps); } function move(evt) { evt=evt||event; cursor_x=evt.pageX-canvas_x; cursor_y=evt.pageY-canvas_y; } function key_manager(evt) { evt=evt||event; key=evt.which||evt.keyCode; switch(key) { case 27: flag=flag?false:true; if(flag) { timeout=setTimeout('anim()',fps); } else { clearTimeout(timeout); } break; case 32: star_speed_save=(star_speed!=0)?star_speed:star_speed_save; star_speed=(star_speed!=0)?0:star_speed_save; break; case 13: context.fillStyle='rgba(0,0,0,'+opacity+')'; break; } top.status='key='+((key<100)?'0':'')+((key<10)?'0':'')+key; } function release() { switch(key) { case 13: context.fillStyle='rgb(0,0,0)'; break; } } function mouse_wheel(evt) { evt=evt||event; var delta=0; if(evt.wheelDelta) { delta=evt.wheelDelta/120; } else if(evt.detail) { delta=-evt.detail/3; } star_speed+=(delta>=0)?-0.2:0.2; if(evt.preventDefault) evt.preventDefault(); } function start() { resize(); anim(); } function resize() { w=parseInt((url.indexOf('w=')!=-1)?url.substring(url.indexOf('w=')+2,((url.substring(url.indexOf('w=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('w=')+2+(url.substring(url.indexOf('w=')+2,url.length)).indexOf('&'):url.length):get_screen_size()[0]); h=parseInt((url.indexOf('h=')!=-1)?url.substring(url.indexOf('h=')+2,((url.substring(url.indexOf('h=')+2,url.length)).indexOf('&')!=-1)?url.indexOf('h=')+2+(url.substring(url.indexOf('h=')+2,url.length)).indexOf('&'):url.length):get_screen_size()[1]); x=Math.round(w/2); y=Math.round(h/2); z=(w+h)/2; star_color_ratio=1/z; cursor_x=x; cursor_y=y; init(); } document.οnmοusemοve=move; document.οnkeypress=key_manager; document.οnkeyup=release; document.onmousewheel=mouse_wheel; if(window.addEventListener) window.addEventListener('DOMMouseScroll',mouse_wheel,false); </script> <body οnlοad="start()" οnresize="resize()" onorientatiοnchange="resize()" οnmοusedοwn="context.fillStyle='rgba(0,0,0,'+opacity+')'" οnmοuseup="context.fillStyle='rgb(0,0,0)'"> <canvas id="starfield" style="background-color:#000000"></canvas> <div id="adsense" style="position:absolute;background-color:transparent;display:none"> </div> </body> </html> 下面附上源码效果流星雨

转载于:https://www.cnblogs.com/mrjim/archive/2011/10/20/4475287.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csdn 用户 蚂蚁翘大象_用户界面设计师房间里的大象

csdn 用户 蚂蚁翘大象Once upon a time, an educated eye detected a new trend in UI designs, particularly, in Dribbble. It was a conceptual proposition, not an actual design for a customer or an app. Trying to explain the characteristics of this new trend, a …

面试官问发布订阅模式是在问什么?

大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;已进行了三个多月&#xff0c;大家一起交流学习&#xff0c;共同进步。本文来自 simonezhou 小姐姐投稿的第八期笔记。面试官常问发布订阅、观察者模式&#…

linux服务器内存、根目录使用率、某进程的监控告警脚本

脚本内容如下 #!/bin/bash#磁盘超过百分之80发送邮件告警DISK_USEDdf -T |sed -n "2p" |awk {print ($4/$3)*100}DISK_percentage80if [ expr "$DISK_USED > $DISK_percentage" ]thenecho "$HOSTNAME服务器当前硬盘使用率为$DISK_USED%" | ma…

figma下载_不用担心Figma中的间距

figma下载重点 (Top highlight)I spend way too much time caring about spacing when designing interfaces and building design systems. You are probably no stranger to the constant 1 px and 8 px nudging, continuous checking of the bottom or in-between space for…

【建议收藏】面试官贼喜欢问的 32+ vue 修饰符,你掌握几种啦?

大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;已进行了三个多月&#xff0c;大家一起交流学习&#xff0c;共同进步。前言vue简洁好用体现在很多个地方&#xff0c;比如其内置了32修饰符&#xff0c;可以很…

知识管理系统Data Solution研发日记之一 场景设计与需求列出

在平时开发的过程中&#xff0c;经常会查找一些资料&#xff0c;从网上下载一些网页&#xff0c;压缩格式文件到自己的电脑中&#xff0c;然后阅读。程序有别于其他行业的一个特征是&#xff0c;所有的资料&#xff0c;数据&#xff0c;压缩文件&#xff0c;只用于产生可以工作…

系列TCP/IP协议-动态IP选路协议(008)

一、引言 前一章已经说过了IP数据包是如何分发的。为啥这一章还要说这个问题&#xff1f;在网络很小、只有单个连接点、没有多余的路由的时候&#xff0c;使用静态选路是可以的。但是一旦网络变大一点就会出现各种问题。在大网络中的网络选路将在该节说明。   动态选路协议用…

shields 徽标_我们如何准确地记住著名徽标的特征和颜色?

shields 徽标The logos of global corporations like Apple, Starbucks, Adidas, and IKEA are designed to create instant brand associations in the minds of billions who see them every day. But how accurately can we remember the features and colors of these famo…

面了三次字节,他的一些感悟

大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;已进行了三个多月&#xff0c;大家一起交流学习&#xff0c;共同进步。今天分享一篇小K投稿的字节面试记录&#xff0c;这是他第三次面字节了&#xff0c;之前…

JavaScript数组内置排序函数

javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组、对象数组排序&#xff0c;其实用的就是原生的sort()方法&#xff0c;用于对数组的元素进行排序。 sort() 方法用于对数组的元素进行排序。语法如下&#xff1a; ArrayObject.sort(order); 测试A&#xf…

解决Wireshark安装Npcap组件失败

2019独角兽企业重金招聘Python工程师标准>>> 解决Wireshark安装Npcap组件失败 从Wireshark 3.0开始&#xff0c;Npcap取代Winpcap组件&#xff0c;成为Wireshark默认的网卡核心驱动。由于该组件属于驱动程序&#xff0c;所以安装时候容易被杀毒/防火墙软件拦截&…

adobe清理工具_Adobe终于通过其新的渐变工具实现了这一点-UX评论

adobe清理工具的Photoshop (Photoshop) UX:用户体验&#xff1a; At first glance, the UX looks okay; it’s pretty clear. The user gets to know how to use this tool right away. The color palette is located above, and the gradient down below. The diamond betwee…

GMF学习系列(二) 一些知识点(续2)

8.插件的国际化&#xff0c;可以参考nwpu.cdcsp.sbpel.diagram.part中messages.java的做法。 9.Text自动提示功能 import org.eclipse.jface.bindings.keys.KeyStroke; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.fieldassist.AutoCompleteField; im…

新手向:前端程序员必学基本技能——调试JS代码

1前言大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;已进行三个月了&#xff0c;大家一起交流学习&#xff0c;共同进步。想学源码&#xff0c;极力推荐之前我写的《学习源码整体架构系列》 包含jQuery、un…

iOS开发ApplePay的介绍与实现

1、Apple Pay的介绍 Apple Pay官方1.1 Apple Pay概念 Apple Pay&#xff0c;简单来说, 就是一种移动支付方式。通过Touch ID/ Passcode&#xff0c;用户可使用存储在iPhone 6, 6p等之后的新设备上的信用卡和借记卡支付证书来授权支付&#xff1b; 它是苹果公司在2014苹果秋季新…

mes建设指南_给予和接受建设性批评的设计师指南

mes建设指南Constructive criticism, or more plainly, feedback, plays a crucial role in a designer’s job. Design is an iterative process, so we are often either asking for feedback on our own work or dishing it out to a fellow designer.建设性的批评&#xff…

面试官:请实现一个通用函数把 callback 转成 promise

1. 前言大家好&#xff0c;我是若川。最近组织了源码共读活动&#xff0c;感兴趣的可以加我微信 ruochuan12 参与&#xff0c;或者在公众号&#xff1a;若川视野&#xff0c;回复"源码"参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。已进行…

java中filter的用法

filter过滤器主要使用于前台向后台传递数据是的过滤操作。程度很简单就不说明了&#xff0c;直接给几个已经写好的代码&#xff1a; 一、使浏览器不缓存页面的过滤器 Java代码 import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOExcept…

我很喜欢玩游戏,那么我就适合做游戏程序员吗?

作者&#xff1a;黄小斜文章来源&#xff1a;【程序员江湖】游戏在今天的普及度已经不是端游时代可以比肩的了。如今人手一台手机、平板就可以吃鸡、打农药&#xff0c;不仅是男生&#xff0c;也有很多女生加入了游戏圈。相信现在在看文章的你也玩游戏&#xff0c;虽然爱玩的程…

open-falcon_NASA在Falcon 9上带回了蠕虫-其背后的故事是什么?

open-falconYes, that’s right. The classic NASA “worm” logo is back! An image of the revived NASA worm logo was released on Twitter by NASA Administrator Jim Bridenstine as well as press release on the NASA.gov website. NASA explained that original NASA …