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关键字变色实现思路及代码
Feb 21 Javascript
JavaScript验证Email(3种方法)
Sep 21 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
Nov 25 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
Feb 03 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
Javascript组合继承方法代码实例解析
Apr 02 Javascript
vue的$http的get请求要加上params操作
Nov 12 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 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
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python实现多线程的两种方式分析
2018/08/29 Python
浅谈Python中的bs4基础
2018/10/21 Python
详解python的四种内置数据结构
2019/03/19 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python读写配置文件操作示例
2019/07/03 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python把一个字符串切开的实例方法
2020/09/27 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
phpquery中文手册
2021/03/18 PHP
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
linux面试相关问题
2013/04/28 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
电气专业推荐信范文
2013/11/18 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
项目申请汇报材料
2014/08/16 职场文书
个人职业及收入证明
2014/10/13 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android