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 each函数的链式调用
Jul 22 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
Jan 27 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
jQuery源码分析之Callbacks详解
Mar 13 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
angular-ui-sortable实现可拖拽排序列表
Dec 28 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
js简单遍历获取对象中的属性值的方法示例
Jun 19 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 08 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
投票管理程序
2006/10/09 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
javascript基础知识
2016/06/07 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
javascript操作cookie
2017/01/17 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
详解vue表单——小白速看
2018/04/08 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Django框架自定义session处理操作示例
2019/05/27 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
社会实践感言
2014/01/25 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
创意广告词
2014/03/17 职场文书
倡议书的写法
2014/08/30 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
客户答谢会致辞
2015/01/20 职场文书
召开会议通知范文
2015/04/15 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python