JS中简单的元素运动案例(封装代码实现)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    *{margin: 0; padding: 0;}
    #div1{
      width: 100px;
      height: 100px;
      background-color: aquamarine;
      position: absolute;
      left: 0px;
      top: 0px;
    }
  </style>
</head>
<body>
  <div id="div1">

  </div>
  <script>
    window.onload = function() {
      // 简单的运动函数
      var div = document.querySelector('#div1')
      // div.onclick = () => {
        // // 获取元素样式
        // let curStyle = parseInt(getStyle(div,'left'))
        // // 通过定时器控制运动
        // let timeId = setInterval(() => {
        //   curStyle += 5
        //   if(curStyle >= 400) {
        //     clearInterval(timeId)
        //   }else{
        //     div.style.left = curStyle + 'px'
        //   }
        // },20)
      // }
      // 封装一个获取元素样式的函数
      function getStyle(ele,style){
        try{
          return window.getComputedStyle(ele)[style]
        }catch(error){
          return ele.currentStyle[style]
        }
      }
      // 封装一个运动函数
      function move(ele,attr,target) { // ele是元素, attr是属性, target是目标样式
        // 获取元素样式
        let curStyle = parseInt(getStyle(ele,attr))
        // 通过定时器控制运动
        let timeId = setInterval(() => {
          curStyle += 5
          if(curStyle >= target) {
            clearInterval(timeId)
          }else{
            ele.style[attr] = curStyle + 'px'
          }
        },20)
      }
      // 使用封装函数
      div.onclick = () => {
        move(div,'left',400)
        move(div,'top',400)
      }
    }
  </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值