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 相关文章推荐
javaScript如何处理从java后台返回的list
Apr 24 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
JS中script标签defer和async属性的区别详解
Aug 12 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
Jan 26 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
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
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python中logging日志库实例详解
2020/02/19 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
红领巾心向党广播稿
2014/01/19 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
企业精神口号
2014/06/11 职场文书
房产协议书范本2014
2014/09/30 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android