简单动画-setInterval()控制div右移

博客主要围绕使用setInterval()函数控制div元素移动来实现简单动画展开,涉及前端开发中动画效果的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>简单动画-</title>
  <style>
    body {
      margin: 0;
    }
    #box {
      position: relative;
      background-color: red;
      width: 100px;
      height: 100px;
    }
  </style>
</head>
<body>
  <input type="button" value="开始" id="btn">
  <div id="box"></div>
  <script>
    // 1 点击按钮,让盒子能够向右移动
    var btn = document.getElementById('btn');
    var box = document.getElementById('box');
    btn.onclick = function () {
      // //style.left 获取的是标签中的style属性设置的样式属性的值
      // // 如果标签中的style没有设置该样式属性,我们获取到的是空字符串
      //console.log(box.style.left);
      // 
      //  console.log(box.style.left + 10 + 'px');   //10px  box.style.left开始为0
      //  // 10px10px  当我们给样式属性设置非法的值,浏览器会帮我们过滤掉
      //  box.style.left = box.style.left + 10 + 'px';  //10px10px  不合法数值
      
      // 获取盒子当前的位置  offsetLeft  offsetTop
      //每点击一次 就可让box向右移动10px
      //box.style.left = box.offsetLeft + 10 + 'px';
      
      // box.offsetLeft 只读属性
      
      // 2 让盒子不停的向右移动
      // 循环的速度非常非常非常快,瞬间循环100次
      //每点击一次 瞬移100次 出结果
      // for (var i = 0; i < 100; i++) {
      //   box.style.left = box.offsetLeft + 5 + 'px';
      // }
      

      var timerId = setInterval(function () {
        // 让盒子停在500px的位置
        // 判断盒子当前的位置是否到达500
        // 
        // 最终盒子停止的位置
        var target = 600;
        // 步进
        var step = 6;
        if (box.offsetLeft >= target) {
          // 停止定时器
          clearInterval(timerId);
          // 设置横坐标为500
          box.style.left = target + 'px';
          console.log(box.style.left);
          // 退出函数
          return;
        }
        box.style.left = box.offsetLeft + step + 'px';
        console.log(box.style.left);
      }, 30);
     }
    
  </script>
</body>
</html>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0px; padding:0px; list-style-type: none; } body{ overflow:hidden; } body #back{ width:1986px; height:1083px; background-color: #926C00; margin: auto; position: relative; top: 0px; left: 0px; margin-top:200px; } body #box{ width: 1206px; height:530px; margin:auto; background-color: #F4B94C; position: absolute; top: 400px; left:400px; z-index:1; overflow:hidden; } #cont{ width: 1000px; height: 300px; position: relative; top: 200px; } #fig{ width:50px; height:60px; background-color: red; position: absolute; } #js{ width: 96px; height: 95px; position:absolute; top: -95px; left: 1040px; background-repeat: no-repeat; background-size: 100%; } #over{ width:180px; height: 10px; position: absolute; top:0px; left: 820px; background-color: pink; } #over img{ position: absolute; left: -900px; } #cf{width:180px; height: 10px; position: absolute; top:0px; left:300px; background-color:red; } </style> </head> <body> <audio src="imgs/1.mp3" id="ksmus"></audio> <audio src="imgs/2.mp3" id="ydmus"></audio> <audio src="imgs/3.mp3" id="tymus"></audio> <audio src="imgs/4.mp3" id="zjmus"></audio> <audio src="imgs/5.mp3" id="ggmus"></audio> <div id="back"> <div id="box"> <div id="cont"><!-- 内容 --> <div id="fig" onkeydown="keyCode()"></div> <div id="js"> < img src="images/5.png" id="dod"> </div><!----> <div id="over"> < img src="images/bottom/1.png"><!-- 陷阱 --> </div> <div id="cf"> </div> </div> </div> </div> </body> <script> function $ (id) { return document.getElementById(id) } function $$(s) { return document.querySelector(s); } function isOver(a,b){ var aWidth = a.offsetWidth; var aHeight = a.offsetHeight; var aTop = a.offsetTop; var aLeft = a.offsetLeft; var bWidth = b.offsetWidth; var bHeight = b.offsetHeight; var bTop = b.offsetTop; var bLeft = b.offsetLeft; aCentertop = aTop+aHeight/2; aCenterleft = aLeft+aWidth/2; bCentertop = bTop+bHeight/2; bCenterleft = bLeft+bWidth/2; if(Math.abs(aCentertop-bCentertop)<= (aHeight+bHeight)/2&& Math.abs(aCenterleft-bCenterleft)<=(aWidth+bWidth)/2){ return true; }else{ return false; } } mov1(); function mov1(){ $('fig').style.top='-60px'; $('fig').style.left='0px'; } var l = 0; var t = -60; var y = -2; var idT =-1; var isTop=true; function movej(){ var offt = $('fig').offsetTop; $('fig').style.top=offt + y +'px'; offt = $('fig').offsetTop; if(offt<=-200){ y = 1;//下落 } if(offt ==-60){ y = -1; //上升 clearInterval(idT); isTop = true; } } function move () { var left = parseInt($('fig').style.left); left = l; // console.log(bb) $('fig').style.left=left+'px'; } setInterval('move()',10); var keys={}; document.addEventListener('keydown', function(){ var kCode=window.event.keyCode; keys[kCode]=true; });//监听按键按下事件 document.addEventListener('keyup', function(){ var kCode=window.event.keyCode; keys[kCode]=false; });//监听按键松开事件 onkeydown=function(){ console.log(keys); if(keys[32]&&isTop){ $('tymus').play(); idT= setInterval("movej()", 5); isTop = false; }//直跳 if(keys[68]&&keys[32]){ console.log('按下D和空格 跳跃代码'); }//右跳 if(keys[65]&&keys[32]){ console.log('按下D和空格 跳跃代码'); }//左跳 if(keys[68]&& $('fig').offsetLeft<1160){ l += 40; }//右移 if(keys[65]&& $('fig').offsetLeft>10){ l += -40; }//左移 } onkeyup=function(){ console.log(keys); } </script> </html>
最新发布
06-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值