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中String类的replace函数
Sep 22 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
浅谈JavaScript的自动垃圾收集机制
Dec 15 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
jQuery获取table下某一行某一列的值实现代码
Apr 07 jQuery
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
一步步教会你微信小程序的登录鉴权
Apr 09 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
js仿360开机效果
Dec 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
建站常用13种PHP开源CMS比较
2009/08/23 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
JS实现简单打字测试
2020/06/24 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Python实现在线音乐播放器
2017/03/03 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
新郎婚宴答谢词
2014/01/19 职场文书
争先创优公开承诺书
2014/08/30 职场文书