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几个不错的函数 $$()
Oct 09 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
js使用post 方式打开新窗口
Feb 26 Javascript
全面理解JavaScript中的闭包
May 12 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
MUI  Scroll插件的使用详解
Apr 13 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
vue-cli脚手架的安装教程图解
Sep 02 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
Oct 26 Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 Javascript
微信小程序实现拖拽功能
Sep 26 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获取网络文件的实现代码
2010/01/01 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
node.js实现快速截图
2016/08/27 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python3 入门教程 简单但比较不错
2009/11/29 Python
python计算最大优先级队列实例
2013/12/18 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
pycharm远程调试openstack代码
2017/11/21 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
Java如何支持I18N?
2016/10/31 面试题
生产现场工艺工程师岗位职责
2013/11/28 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
大学军训感言300字
2014/03/09 职场文书
暑假家长评语大全
2014/04/17 职场文书
还款承诺书范文
2014/05/20 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
红高粱观后感
2015/06/10 职场文书
丧事酒宴答谢词
2015/09/30 职场文书