<!doctype html>

 <html lang="en">

 <head>

     <meta charset="UTF-8">

     <title>Document</title>

     <style type="text/css">

     *{

         margin: 0px;

         padding: 0px;

     }

     html,body{

         height: 100%;

         width: 100%;

         overflow: hidden; /*隐藏滚动条,消除小球碰到滚动条出现的窗口闪动*/

     }

     .content{

         width: 100%;

         height: 100%;

         position: relative;

         background: black;

     }

     .ball{

         position: absolute;

         border-radius: 50%;

     }

     </style>

 </head>

 <body>

     <div class="content" id="con"></div>

     <script type="text/javascript">

     //定义随机函数

     function RandomNum(num1,num2){

         return Math.floor(Math.random()*(num2-num1+1)+num1);

     }

     //构造小球函数

     function Ball(){

         this.ball=document.createElement("div");

         var randomNum=RandomNum(20,50);

         this.width=randomNum

         this.height=randomNum

         //如果元素有id名,我们可以直接使用,不用document.get....获取

         this.left=RandomNum(0,con.offsetWidth-randomNum);

         this.top=RandomNum(0,con.offsetHeight-randomNum);

         this.backgroundColor="rgba("+RandomNum(0,255)+","+RandomNum(0,255)+","+RandomNum(0,255)+","+Math.random()+")";//随机颜色

         this.tempX=this.left;

         this.tempY=this.top;

         this.speedx=RandomNum(10,20)-15.5;//后面的小数是保证随机产生的方向有正有负

         this.speedy=RandomNum(10,20)-15.5;

     }

     //画小球的方法

     Ball.prototype.draw=function(){

         this.ball.style.width=this.width+"px";

         this.ball.style.height=this.height+"px";

         this.ball.className="ball";

         this.ball.style.left=this.tempX+"px";

         this.ball.style.top=this.tempY+"px";

         this.ball.style.backgroundColor=this.backgroundColor;

         con.appendChild(this.ball);

     }

     //运动函数

     Ball.prototype.move=function(){

         this.tempX=this.tempX+this.speedx;    

         this.tempY=this.tempY+this.speedy;

      // 判断临界值

         if(this.tempX+this.width>=document.body.clientWidth||this.tempX<=0){

             this.speedx = -this.speedx;//改变方向

         }

         if(this.tempY+this.height>=document.body.clientHeight||this.tempY<=0) {

             this.speedy = -this.speedy;

         }

          this.draw();

     }

     //产生小球

     var balls=[];

     for(var i=0;i<100;i++){

         var ball=new Ball();

         balls.push(ball);//生成的小球对象放进数组

     }

     function start(){

          for(var i = 0;i < balls.length;i++) { 

           balls[i].move();

      } 

     }

     window.onload=function(){

         setInterval(start,10);//设置定时器

     }

     </script>

 </body>

 </html>

js五彩小球的更多相关文章

  1. js实现小球的弹性碰撞。

      前  言 MYBG 小编最近在做自己的个人网站,其中就用到了一个小球碰撞检测的功能,想自己写,无奈本人能力不足啊(毕竟还是一个菜鸟)!!就想着找个插件用一下也好,可是找了好久也没有找到一个比较好用 ...

  2. js实现小球碰撞游戏

    效果图:  效果图消失只是截的gif图的问题 源码: <!DOCTYPE html> <html lang="en"> <head> <m ...

  3. js中小球碰壁反弹

    一. 在指定容器内的碰壁反弹 <!DOCTYPE HTML> <html> <head> <title></title> <meta ...

  4. Canvas+Js制作动量守恒的小球碰撞

    目的:通过js实现小球碰撞并实现动量守恒 canvas我们就不多说了,有用着呢. 我们可以通过canvas画2D图形(圆.方块.三角形等等)3D图形(球体.正方体等待). 当然这只是基础的皮毛而已,c ...

  5. 撩课-Web架构师养成系列第一篇

    前言 Web架构师养成系列共15篇,每周更新一篇,主要分享.探讨目前大前端领域(前端.后端.移动端)企业中正在用的各种成熟的.新的技术.部分文章也会分析一些框架的底层实现,让我们做到知其然知其所以然. ...

  6. Unity3D 5.x 简单实例 - 脚本编写

    1,Vector3 类型变量存储向量坐标值 Vector3.forward Vector3(0,0,1) Vector3.up Vector3(0,1,0) Vector3.right Vector3 ...

  7. [js高手之路]html5 canvas动画教程 - 边界判断与小球粒子模拟喷泉,散弹效果

    备注:本文后面的代码,如果加载了ball.js,那么请使用这篇文章[js高手之路] html5 canvas动画教程 - 匀速运动的ball.js代码. 本文,我们要做点有意思的效果,首先,来一个简单 ...

  8. js实现多个小球碰撞

    实现思路:小球的移动,是通过改变小球的left和top值来改变,坐标分别为(x,y)当x/y值加到最大,即加到父级的宽度或者高度时,使x值或者y值减小,同理当x值或者y值减到最小时,同样的使x值或者y ...

  9. 原生js小球运动

    //html代码 <input type="button" value="小球运动" /> <div></div> //js ...

随机推荐

  1. 【Git】一、安装、配置和仓库创建

    之前一直使用图形界面的git,只会一些最常用的操作,并没有说深入学习git的全部功能 开发这么久了,觉得是时候学习一下指令操作,更快捷也更bigger ------------------------ ...

  2. safari同步google书签

    1 直接通过safari的导入书签,from chrome就可以了

  3. 2.03_Python网络爬虫Http和Https

    一:HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法,以明文的形式传输,效率高,但是不安全 HTTPS ...

  4. idea仿eclipse的export导出功能

    自从开发工具从eclipse切换到idea来之后,才知道什么叫做'真香'.idea强大的扩展功能极大的拓展了他的可用性,最近有个功能就是通过idea的扩展插件搞定的. 事情是这样的,朋友使用eclip ...

  5. Redis主从、哨兵、集群

    主从 命名设置:>6380 slaveof 127.0.0.01 6379 slaveof on one----------配置:-- 注意一点: 一定开启rdb,不能使用aof从节点配置:主节 ...

  6. 算法---FaceNet+mtcnn的使用记录

    FaceNet+mtcnn---ubutntu系统下的使用记录 @WP20190307 由于先配置了FaceNet算法,中途遇到了点问题,单独又配置了mtcnn进行学习,没有深入,蜻蜓点水.今天,在尝 ...

  7. ACM算法模板整理

    史诗级ACM模板整理 基本语法 字符串函数 istream& getline (char* s, streamsize n ); istream& getline (char* s, ...

  8. OpenJudge POJ C19C 贪心

    https://cn.vjudge.net/contest/309482#problem/C #include<bits/stdc++.h> using namespace std; ty ...

  9. 搜索引擎选择: Elasticsearch与Solr(转载)

    原文地址:http://www.cnblogs.com/chowmin/articles/4629220.html 搜索引擎选型调研文档 Elasticsearch简介* Elasticsearch是 ...

  10. 如何在网页标题栏title加入logo(icon)图标?

    打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标,当网页被添加到收藏夹或者书签中时也会出现网页的图标,怎么在网页title左边显示网页的logo图标呢? 方法一(被动式): 制作一个ico格式 ...