js实现div的碰壁反弹效果
文章地址 https://www.cnblogs.com/sandraryan/
需求: 写一个div,让div在父级进行匀速运动,碰到父级上下左右的边框,就向反方向运动。
碰壁反弹在游戏制作中很常用~~~~
<style>
.wrap {
width: 1000px;height: 500px;
border: 1px solid red;
margin: 40px auto;
position: relative;
box-sizing: border-box; }
.box {
width: 100px;height: 100px;
background-color: green;
position: absolute;
top: 100px;left: 200px;
/* border: 1px solid red; */
/* 因为父元素有border,所以,可以给子元素也加一个边框,更好的解决方式是给父元素加box-sizing: border-box;总之就是算的时候宽高符合就行了*/
}
</style>
<body>
<div class="wrap">
<div class="box"></div>
</div> <script>
// 获取元素
var wrap = document.getElementsByTagName("div")[0];
var box = document.getElementsByTagName("div")[1]; //让元素动起来
// 添加两个变量,用于更换运动方向
var a = 1;
var b = 1;
// 获取元素的可运动空间,用父元素的宽高减去子元素的宽高
var w = wrap.offsetWidth - box.offsetWidth;
var h = wrap.offsetHeight - box.offsetHeight; // console.log(w,h); setInterval(function(){
// 获取元素当前left
var l = box.offsetLeft;
if(l == w || l == 0){
// 如果到达可运动空间最大值和最小值的时候,a 变成负值
a *= -1;
}
// 把元素距离左边的值每10ms加1px
// a变成负值可以改变运动方向
box.style.left = l + a + "px"; // 垂直方向同水平方向
var t = box.offsetTop;
if(t == h || t == 0){
b *= -1;
}
box.style.top = t + b + "px";
},10); </script>
</body>
js实现div的碰壁反弹效果的更多相关文章
- 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果
继上一篇... 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果 关键在于边界检测,以及乘以的系数问题,实现代码并不难,如下: <!DOCTYPE html> <html la ...
- 原生js实现一个DIV的碰撞反弹运动
原生js实现一个DIV的碰撞反弹运动: 关键在于DIV的边界检测,进而改变运动方向,即可实现碰撞反弹效果. <!DOCTYPE html> <html lang="en& ...
- 原生js实现多个随机大小颜色位置速度小球的碰壁反弹
文章地址 https://www.cnblogs.com/sandraryan/ 需求:生成n个小球,让他们在一个大盒子中碰壁反弹,要求小球随机颜色,大小,初始位置,运动速度. 思路分析: 创建小球随 ...
- js中小球碰壁反弹
一. 在指定容器内的碰壁反弹 <!DOCTYPE HTML> <html> <head> <title></title> <meta ...
- js鼠标滚轮滚动图片切换效果
效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- 原生JS、CSS实现的转盘效果(目前仅支持webkit)
这是一个原生JS.CSS实现的转盘效果(题目在这:http://www.cnblogs.com/arfeizhang/p/turntable.html),花了半个小时左右,准备睡觉,所以先贴一段代码, ...
- js实现中文简繁切换效果
html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- js鼠标滑动图片显示隐藏效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jq商品展示图放大镜 and 原生js和html5写的放大镜效果 ~~效果不错
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...
随机推荐
- nested exception is org.hibernate.MappingException解决方案
1.可能是因为映射文件( Order.hbm.xm)配置的class路径出错 <hibernate-mapping> <class name="com.web.bean.O ...
- JS判断PC 手机端显示不同的内容
方法一: function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android ...
- JVM学习篇章(二)
上节我们已经介绍了jvm和监控的一下方法,下面举例说明一下: 瓶颈问题定位: 内存泄漏原因定位: 1.常见的内存泄漏 2.定位的方法
- 获取文章,显示时自动换行(word-break与 work-wrap的区别)
HTML:<div class="na-i"> <span> </span></div>样式:.na-i{ overflow-y: ...
- Hibernate 数据库方言配置;no dialect mapping for jdbc type:-9;生僻字
最近因为生僻字在界面上显示为?: 主要原因是该字段在数据库中就是varchar类型,显示的就是?:如䶮(yan):现把varchar类型改为nvarchar类型:数据中能够正常显示: 但是Spring ...
- No.4 Verilog 表达式
4-1 操作数 常数.参数.线网.变量.位选.存储器.数组. *部分位选: integer mark; :] inst; :] gpio; inst[mark+ : ] //选择 mark,mark+ ...
- C++之以分隔符的形式获取字符串
void CConvert::Split(const std::string& src, const std::string& separator, std::vector<st ...
- #define 和常量 const 的区别
const 后的常量,程序对其中只能读不能修改. #include <iostream> using namespace std; int main() { const double pi ...
- 【C++】关于map的遍历 删除
int main(int argc, char* argv[]) { map<string, string> mapData; mapData["a"] = " ...
- 集合--Map&&HasMap和TreeMap
特点:以键值对key,value方式存储的结构 key:Set集合 key能重复,无序的,如果重复,后面的key会把前面的覆盖掉(key必须是唯一的,不唯一,那么后面的value会把前面的va ...