动画函数封装——动画原理

我们先简单的做一个HTML、CSS页面。

<style>
    body{
      background-color: #ccc;
    }
    div {
      position: absolute;
      left: 0;
      width: 100px;
      height: 100px;
      background-color: red;
    }
  </style>
</head>

<body>
  <div></div>
<body>

在做动画之前我们首先要知道他的核心原理以及实现步骤

核心原理:通过定时器setInterval() 不断移动盒子位置。

实现步骤:

  1. 获得盒子当前位置(获取位置用div.offsetLeft)

  1. 让盒子在当前位置加上1个移动距离(更改位置用div.style.left)

  1. 利用定时器不断重复这个操作

  1. 加一个结束定时器的条件

  1. 注意此元素需要添加定位,才能使用element.style.left

js代码如下:

<script>
    var div = document.querySelector('div');
    var timer = setInterval(function () {
    div.style.left = div.offsetLeft + 5 + 'px';
    }, 30)
</script>

结果如下:

红色方块会超出页面范围,大家想想这是为什么呢?

我们上面这段代码只是添加了定时器,但是没有设置停止动画(停止动画本质就是停止计时器),所以才会出现这样的情况,为了避免这样的事发生,我们添加一个判断语句来设置。

<script>
    var div = document.querySelector('div');
    var timer = setInterval(function () {
      if (div.offsetLeft >= 400){
        clearInterval(timer);
      }
    div.style.left = div.offsetLeft + 10 + 'px';
    }, 30)
  </script>

当距离左边距400px时就会停止动画达到我们想要的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值