文章地址 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的碰壁反弹效果的更多相关文章

  1. 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果

    继上一篇... 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果 关键在于边界检测,以及乘以的系数问题,实现代码并不难,如下: <!DOCTYPE html> <html la ...

  2. 原生js实现一个DIV的碰撞反弹运动

     原生js实现一个DIV的碰撞反弹运动: 关键在于DIV的边界检测,进而改变运动方向,即可实现碰撞反弹效果. <!DOCTYPE html> <html lang="en& ...

  3. 原生js实现多个随机大小颜色位置速度小球的碰壁反弹

    文章地址 https://www.cnblogs.com/sandraryan/ 需求:生成n个小球,让他们在一个大盒子中碰壁反弹,要求小球随机颜色,大小,初始位置,运动速度. 思路分析: 创建小球随 ...

  4. js中小球碰壁反弹

    一. 在指定容器内的碰壁反弹 <!DOCTYPE HTML> <html> <head> <title></title> <meta ...

  5. js鼠标滚轮滚动图片切换效果

    效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...

  6. 原生JS、CSS实现的转盘效果(目前仅支持webkit)

    这是一个原生JS.CSS实现的转盘效果(题目在这:http://www.cnblogs.com/arfeizhang/p/turntable.html),花了半个小时左右,准备睡觉,所以先贴一段代码, ...

  7. js实现中文简繁切换效果

    html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  8. js鼠标滑动图片显示隐藏效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. jq商品展示图放大镜 and 原生js和html5写的放大镜效果 ~~效果不错

    <!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...

随机推荐

  1. 2019阿里云开年Hi购季云通信分会场全攻略!

    2019阿里云云上Hi购季活动已经于2月25日正式开启,从已开放的活动页面来看,活动分为三个阶段: 2月25日-3月04日的活动报名阶段.3月04日-3月16日的新购满返+5折抢购阶段.3月16日-3 ...

  2. Poj 1182种类(带权)并查集

    题目链接 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44316 Accepted: 12934 Descriptio ...

  3. 【JZOJ3297】【SDOI2013】逃考(escape)

    Mission 高考又来了,对于不认真读书的来讲真不是个好消息.为了小杨能在家里认真读书,他的亲戚决定驻扎在他的家里监督他学习,有爷爷奶奶.外公外婆.大舅.大嫂.阿姨-- 小杨实在是忍无可忍了,这种生 ...

  4. django 验证码(django-simple-captcha)

    django 验证码(django-simple-captcha) django-simple-captcha 官方文档(含基于modelForm的用法)  https://django-simple ...

  5. 数据库---JDBC的解析

    一.JDBC是什么? JDBC:Java Database Connectivity(Java数据库连接池).指定了统一的访问各种关系型数据库的标准接口-----桥梁作用.  功能:[与数据库建立连接 ...

  6. Nginx 对访问量的控制

    目的 了解 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,对请求访问量进行控制. Nginx 模块化 nginx ...

  7. 二.使用JDBC对数据库CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  8. hdu4180 数论

    一个分数假如 3/5=1/(1+2/3)=1/(1+1/(1+1/2)); 当分子出现1的时候,只要让分母减一. #include <stdio.h> #include <stdli ...

  9. BZOJ5259/洛谷P4747: [Cerc2017]区间

    BZOJ5259/洛谷P4747: [Cerc2017]区间 2019.8.5 [HZOI]NOIP模拟测试13 C.优美序列 思维好题,然而当成NOIP模拟题↑真的好吗... 洛谷和BZOJ都有,就 ...

  10. nginx 做反向代理

    1.Nginx的常用配置大家可以去搜一下,有很多优秀的博客,我这篇文章要实现的需求是: a.根据访问的域名不同,跳转到不同的项目(html首页,80端口) b.拦截访问中所有带有api的请求,转发到后 ...