JavaScript实现多球运动效果


Posted in Javascript onSeptember 07, 2020

本文实例为大家分享了JavaScript实现多球运动的具体代码,供大家参考,具体内容如下

JavaScript实现多球运动效果

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>多球运动</title>
  <style>
    *{margin:0;padding:0;}
    body{background-color: #90f;}
    .ball{position: absolute;left:0;top:0;width:100px;height:100px;background: #f0f;border-radius: 50%;}
  </style>
</head>
<body>
  <script>
    run(22)//封装
    //定义速度
    var speed;
    function run(num){
      //创建出num个div
      for(var i=0;i<num;i++){
        //[2,11) 随机速度
        speed = Math.floor(Math.random()*9+2);
        //创建生成节点
        var div = document.createElement("div");
        //添加类名
        div.className = 'ball'
        //自定义属性保存值
        div.speedX = Math.floor(Math.random()*9+2)
        div.speedY = Math.floor(Math.random()*9+2)
        //将div放置到body中
        document.body.appendChild(div)
      }
      //获取元素
      var box = document.getElementsByClassName( "ball" )
      //获取文档可视区域的宽高
      var maxX = document.documentElement.clientWidth - box[0].offsetWidth;
      var maxY = document.documentElement.clientHeight - box[0].offsetHeight;
      //自适应窗口
      window.onresize = function(){
        maxX = document.documentElement.clientWidth - box[0].offsetWidth;
        maxY = document.documentElement.clientHeight - box[0].offsetHeight;
      }
      play()
      function play(){
        for(var i=0;i<num;i++){
          //获取
          var ball = box[i];
          var startTop = ball.offsetTop;
          var startLift = ball.offsetLeft;
          //startTop都为零;
          var top = startTop + ball.speedY;
          var left = startLift + ball.speedX;
          //判断小球是否出左右边界
          if(left <= 0 || left >= maxX){
            //改变方向
            ball.speedX = -ball.speedX;
            ball.style.background=randomColor()
            //判断
            if(left <= 0){
              left = 0;
            }else if(left >= maxX){
              left = maxX;
            }
          }
          //判断小球是否出上下边界
          if(top <= 0 || top >= maxY ){
            // 改变方向;
            ball.speedY = -ball.speedY; 
            ball.style.background=randomColor()
            //判断
            if( top <= 0 ){
              top = 0;
            }else if( top >= maxY ){
              top = maxY;
            }
          }
          ball.style.top = top + "px";
          ball.style.left = left + "px";          
        }
        //执行动画帧
        requestAnimationFrame(play);
      }
      //颜色随机
      function randomColor() {
        var r = Math.floor(Math.random() * 256),
          g = Math.floor(Math.random() * 256),
          b = Math.floor(Math.random() * 256);
          return "rgb(" + r + "," + g + "," + b + ")";
      }
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态添加js事件实现代码
Mar 12 Javascript
js 实现打印网页中定义的部分内容的代码
Apr 01 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
javascript 数组去重复(在线去重工具)
Dec 17 Javascript
Bootstrap中data-target 到底是什么
Feb 14 Javascript
vue中axios处理http发送请求的示例(Post和get)
Oct 13 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
JavaScript实现世界各地时间显示
Sep 07 #Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
Sep 07 #Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 #Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 #Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 #Javascript
三步搞定:Vue.js调用Android原生操作
Sep 07 #Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 #Javascript
You might like
mayfish 数据入库验证代码
2010/04/30 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
新浪的图片新闻效果
2007/01/13 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python实现udp数据报传输的方法
2014/09/26 Python
python web框架学习笔记
2016/05/03 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
python使用matplotlib绘制热图
2018/11/07 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
中间件分为哪几类
2012/03/14 面试题
三个Unix的命令面试题
2015/04/12 面试题
部队党性分析材料
2014/02/16 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
走群众路线剖析材料
2014/10/09 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
运动会宣传语
2015/07/13 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL