Javascript:实操---碰壁反弹(有阻碍物)

CSS部分

<style>
*{
    margin: 0px;
    padding: 0px;

}
#main{
    width: 700px;
    height: 500px;
    border: 1px solid black;
    position: relative;
}
#child{
    width: 30px;
    height: 30px;
    border-radius: 15px;
    background-color: #ccc;
    position: absolute;
    left: 0;
    top: 0;
}
#box{
    width: 400px;
    height:130px;
    background-color: #ccc;
    position: absolute;
    top: 100px;
    left: 150px;
}
    </style>
HTML部分
<body>
    <div id="main">
        <div id="child"></div>
        <div id="box"></div>
    </div>
</body>

JS部分

<script type="text/javascript">

window.onload=function(){

  var omain=document.getElementById("main");

  var ochild=document.getElementById("child");

  var obox=document.getElementById("box");

  

  var startx=5;

  var starty=5;

  var maxh=omain.offsetHeight-ochild.offsetHeight;

  var maxw=omain.offsetWidth-ochild.offsetWidth;

  var ileft=ochild.offsetLeft;

  var itop=ochild.offsetTop;

  var boxl=obox.offsetLeft-ochild.offsetWidth;

  var boxr=obox.offsetLeft+obox.offsetWidth;

  var boxt=obox.offsetTop-ochild.offsetHeight;

  var boxb=obox.offsetTop+obox.offsetHeight;

  setInterval(function(){

    ileft+=startx;

    itop+=starty;

    if(ileft<=0||ileft>=maxw){

      startx*=-1;

    }

    if(itop<=0||itop>=maxh){

      starty*=-1;

    }

    if(ileft==boxl&&itop<=boxb&&itop>=boxt){

      startx*=-1;//box左边

    }

    if (ileft==boxr&&itop<=boxb&&itop>=boxt) {
                startx*=-1;//box右边
          };
        if (itop==boxt&&ileft<=boxr&&ileft>=boxl) {
                starty*=-1;//box上边
         };
         if (itop==boxb&&ileft<=boxr&&ileft>=boxl) {
                starty*=-1;//box下边
         };

    ochild.style.left=ileft+"px";

    ochild.style.top=itop+"px";

  },10);

}

</script>

Javascript:实操---碰壁反弹(有阻碍物)

时间: 2024-10-07 21:39:55

Javascript:实操---碰壁反弹(有阻碍物)的相关文章

Javascript:实操---碰壁反弹(无阻碍物)

CSS部分 <style type="text/css">#wrap{    height: 300px;    width: 500px;    border: 1px solid #000;    position: relative;}#child{    position: absolute;    left: 0;    top: 0;    height: 50px;    width: 50px;    background-color: #ccc;}<

Javascript:实操---自定义滚动条

CSS部分 <style type="text/css">*{    margin: 0;    padding: 0;}#wrap{    width: 300px;    height: 400px;    overflow: hidden;    position: relative;    border: 1px solid #ccc;    margin: 100px;}    #content{    position: absolute;    font-si

Javascript:实操---右键显示列表

JS部分 <script type="text/javascript"> window.onload=function(){ var oUl1=document.getElementById("ul1"); var oLi1=oUl1.children; var bodyWidth=document.documentElement.clientWidth||document.body.clientWidth; var bodyHeight=documen

Javascript:实操---拖拽(完整版)

CSS部分 <style type="text/css">body{height: 3000px;    width: 3000px;}#div1{    height: 100px;    width: 100px;    background-color: #ccc;    position: absolute;}</style> HTML部分 <div id="div1">DFDSF</div>我发的思考附近的刷

Javascript:实操---放大镜效果(2)

CSS部分<style type="text/css">/* body{    padding: 10px;} */#minWrap{    width: 350px;    height: 350px;    border: 1px solid #ccc;    position: relative;}    #slider{    height: 175px;    width: 175px;    background-color: yellow;    opacit

Javascript:实操---放大镜效果

CSS部分<style type="text/css">/* body{    padding: 10px;} */#minWrap{    width: 350px;    height: 350px;    border: 1px solid #ccc;    position: relative;}    #slider{    height: 175px;    width: 175px;    background-color: yellow;    opacit

Javascript:实操---类似京东图片点击切换

CSS部分 <style>*{ margin:0; padding:0;}#div1{ width:670px; height:150px; margin:20px auto; position:relative; overflow:hidden;}.out{ width:5000px; height:150px; overflow:hidden; position:absolute;}.out ul{ height:150px; list-style:none; position:absol

Javascript:实操---导航条滚动

CSS部分 <style>*{ margin:0; padding:0;}.out{ position:absolute;}.tabs{ width:300px; height:100px; margin-top:20px; position:absolute;}.slider{ height:7px; width:79px; border-bottom:2px solid #E4393C; text-align:center; overflow:hidden; position:absolu

Javascript:实操---矩形碰撞后显示颜色

CSS部分 <style type="text/css">div{    font-size: 70px;}#div1{    height: 100px;    width: 100px;    background-color: #ccc;    position: absolute;}    #div2{    height: 100px;    width: 100px;    background-color: yellow;    position: absol