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 相关文章推荐
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
JavaScript判断前缀、后缀是否是空格的方法
Apr 15 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
vuejs父子组件通信的问题
Jan 11 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
Aug 26 Javascript
vue实现移动端触屏拖拽功能
Aug 21 Javascript
vue mvvm数据响应实现
Nov 11 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 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
如何隐藏你的.php文件
2007/01/04 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP 实现缩略图
2021/03/09 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python3下载抖音视频的完整代码
2019/06/05 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python性能测试工具locust的使用
2020/12/28 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
购房意向书
2014/08/30 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
干部培训工作总结2015
2015/05/25 职场文书
如何写观后感
2015/06/19 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android