" />
当前位置:首页 > 日记 > 正文

JS实现小球的弹性碰撞效果

JS实现小球的弹性碰撞效果

一、HTML代码(body部分)

 <body>   <!--只需要做一个大div包裹几个小div即可,你想要几个小球碰撞就在内部做几个div即可,这里我们做了6个小球-->   <div id="main">     <div></div>     <div></div>     <div></div>     <div></div>     <div></div>     <div></div>   </div>  </body>

  上面body部分这样就算是完成了,下面我们给body中的div做一些小样式。

二、CSS小球样式部分

<style type="text/css">   /*将body默认的margin和padding部分去掉*/   *{     margin: 0px;     padding: 0px;    }    /*采用定位的方式,让小球运动起来*/    #main{      margin: 0px auto;     position: relative;   }   /*小球的样式*/   #main div{     overflow: hidden;     position: absolute;     width: 80px;     height: 80px;    opacity: 0.5;     border-radius: 50%;     background-color: red;   } </style>

   小球是要运动起来的,我们通过给小球和它的父元素添加定位,最后用js改变其top、bottom、left、right值来让小球运动。现在我们小球的样式已经做好了,下面的js代码才是重中之重。

3.1 Android 事件基础知识

其实,我们通过上面的代码就可以完全实现一个小球碰撞检测的功能了。但是仅仅是上面的代码,还是会存在一定的bug,就是当整个网站存在右侧滚动条时,当小球碰到屏幕右侧的时候,会出现一瞬的横向滚动条,这就是做网站比较忌讳的了,横向滚动条的出现太丑了。所以我们可以通过以下代码来解决。

//滚动条宽度计算函数    function getScrollbarWidth() {      var oP = document.createElement("p"),        styles = {          width: "100px",          height: "100px",          overflowY: "scroll"        }, i, scrollbarWidth;      for (i in styles) oP.style[i] = styles[i];      document.body.appendChild(oP);      scrollbarWidth = oP.offsetWidth - oP.clientWidth;      oP.remove();      return scrollbarWidth;    }

以上是一个计算滚动条宽度的函数,此函数可以计算右侧滚动条的宽度,我们只需要在“根据浏览器窗口的大小自动调节小球的运动空间”上面,调用此函数

var scrollbarWidth = getScrollbarWidth(); 再修改小球的最大运动宽度   maxW=window.innerWidth-circles[0].clientWidth-scrollbarWidth ;这样这个bug就修改好了。

总结

以上所述是小编给大家介绍的JS实现小球的弹性碰撞效果 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

.NET附件上传大小限制控制

.NET附件上传大小限制控制

控制,上传,附件,大小,电脑软件,今天在公司的服务器上搭建了一个Dvbbs.Net 1.1,协助管理公司一些办公文件,由于要上传的文件大小部分较大(超过几十兆),所以今天的大部分时间是研究怎么破除上传的限制问题。知道23点以后才基本上解决。现将问题处…

PHP实现在对象之外访问其私有属性p

PHP实现在对象之外访问其私有属性p

私有属性,对象,属性,方法,问其,本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下:public 表示全局的访问权限,类内部外部子类都可以访问;private表示私有的访问权限,只有本类内…

NodeJS创建最简单的HTTP服务器

NodeJS创建最简单的HTTP服务器

服务器,最简单,电脑软件,NodeJS,HTTP,☆ 引子var http = require('http');http.createServer(function(request, response){ response.writeHead(200, { 'Content-Type': 'text-plain' }); response.end('Hello World\n');}).li…

jQuery实现html table行Tr的复制、

jQuery实现html table行Tr的复制、

计算,删除,功能,电脑软件,html,本文实例讲述了jQuery实现html table行Tr的复制、删除、计算功能。分享给大家供大家参考,具体如下:添加行:function addtr(){ var tr = $("#tb tr").eq(0).clone(); tr.appendTo("#tb"); //tr.insertB…

vue2.0 自定义日期时间过滤器

vue2.0 自定义日期时间过滤器

自定义,过滤器,日期时间,电脑软件,方法一:// template{{a | data}}//scriptdata:{ a: Date.now()}filters: { data:function (input) { var d = new Date(input); var year = d.getFullYear(); var month = d.getMonth() + 1; …

Bootstrap学习笔记之进度条、媒体

Bootstrap学习笔记之进度条、媒体

进度条,对象,媒体,详解,学习笔记,1.基础进度条要写在<div class="progress"></div>里面。<div class="col-md-6"> <div class="progress"> <div class="progress-bar" style="width:30%;"></div> </div></div>2.多彩进度条<div c…

微信小程序实现选项卡功能

微信小程序实现选项卡功能

选项卡,功能,程序,电脑软件,微信小,本文实例为大家分享了微信小程序选项卡功能展示的具体代码,供大家参考,具体内容如下首先看看微信小程序上的选项卡的效果:原理呢,就是先布局好(这就不必说了吧),然后在上面的每一个选项卡上都定义一个同样的点击…

Vue中使用vux的配置详解

Vue中使用vux的配置详解

配置详解,电脑软件,Vue,vux,Vue中使用vux的配置,分为两种情况:一、根据vux文档直接安装,无需手动配置npm install vue-cli -g // 如果还没安装vue init airyland/vux2 my-project // 创建名为 my-project 的模板cd my-project // 进入项目n…

Server.MapPath |  错误 ’ASP 017

Server.MapPath | 错误 ’ASP 017

字符,错误,不允许,电脑软件,MapPath,未启用父路径 症状举例: Server.MapPath() 错误 &rsquo;ASP 0175 : 80004005&rsquo; 不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 参数中不允…

win2003 IIS 500内部服务器错误(典

win2003 IIS 500内部服务器错误(典

数据库,服务器,错误,解决方案,典型,IIS正确设置步骤: 一、启用Asp支持 Windows Server 2003 默认安装,是不安装 IIS 6 的,需要另外安装。安装完 IIS 6,还需要单独开启对于 ASP 的支持。 第一步,启用Asp,进入:控制面板 -> 管理工具 ->IIS(Internet…

INdesign CS6怎么在A4的页面添加A3

INdesign CS6怎么在A4的页面添加A3

页面,尺寸,电脑软件,INdesign,INdesign CS6中想要在原有的文档里面添加一个别的尺寸的页面,该怎么设置页面尺寸呢?下面我们就来看看详细的教程。软件名称:Adobe InDesign CS6 中文免费版软件大小:878.42MB更新时间:2014-05-261、打开一个ID文档,…

Spring获取ApplicationContext对象

Spring获取ApplicationContext对象

工具类,方法,对象,电脑软件,Spring, Spring获取ApplicationContext对象工具类的实现方法(1)实现的工具类:package com.util; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPath…