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 相关文章推荐
文本加密解密
Jun 23 Javascript
js判断undefined类型示例代码
Feb 10 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
解决node修改后需频繁手动重启的问题
May 13 Javascript
vue集成百度UEditor富文本编辑器使用教程
Sep 21 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
JS实现图片懒加载(lazyload)过程详解
Apr 02 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 Javascript
JavaScript利用html5新方法操作元素类名详解
Nov 27 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新手入门学习方法
2011/05/08 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
Python中的下划线详解
2015/06/24 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python不同系统中打开方法
2020/06/23 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
工程班组长岗位职责
2013/12/30 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
摄影展策划方案
2014/06/02 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
python如何读取.mtx文件
2021/04/22 Python
Python re.sub 反向引用的实现
2021/07/07 Python