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中使用inline函数的问题
Mar 08 Javascript
jQuery使用手册之三 CSS操作
Mar 24 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
JS实现闪动的title消息提醒效果
Jun 20 Javascript
浅谈Node.js中的定时器
Jun 18 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
Nov 29 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
详解Vue2.0组件的继承与扩展
Nov 23 Javascript
jQuery+ThinkPHP实现图片上传
Jul 23 jQuery
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 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的知识
2006/11/17 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
javascript 自动转到命名锚记
2009/01/10 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python实现自动化上线脚本的示例
2019/07/01 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
七年级作文之秋游
2019/10/21 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python