简单的动画函数封装(2)
生活随笔
收集整理的這篇文章主要介紹了
简单的动画函数封装(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
<div></div><!-- <span></span> --><button class="btn1">點擊500</button><button class="btn2">點擊800</button>
div{width: 100px;height: 100px;background-color: red;position: absolute;top: 0;left: 0;margin-top: 100px;}/* span{display: block;width: 50px;height: 50px;background-color: gold;margin-top: 200px;position: absolute;top: 0;left: 0;} */
<script>// 創(chuàng)建簡單的動畫函數(shù)封裝效果(目標(biāo)對象,目標(biāo)位置)function animate(obj,target,callback){//callback回調(diào)函數(shù)相當(dāng)于 :callback = function(){},是零時添加的形參//清楚時間效果的同時,只留下一個時間效果clearInterval(obj.timer);obj.timer = setInterval(function(){//步長值寫道定時器里面(緩動動畫效果)// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - obj.offsetLeft) / 10;//當(dāng)step大于0,就向上取值,要不向下取值,然后在賦值給stepstep = step > 0 ? Math.ceil(step) : Math.floor(step);//進(jìn)行距離的判斷//如果當(dāng)前的位置等于目標(biāo)位置if(obj.offsetLeft == target){//清楚當(dāng)前的時間效果clearInterval(obj.timer);//判斷有沒有這個回調(diào)函數(shù)if(callback){callback();}}//更改的位置等于 = 當(dāng)前位置 + 每次移動的距離obj.style.left = obj.offsetLeft + step + 'px';},30)}var div = document.querySelector('div');var btn1 = document.querySelector('.btn1');var btn2 = document.querySelector('.btn2');btn1.onclick = function(){animate(div,500,function(){// alert('你好嗎?');div.style.backgroundColor = 'green';});}btn2.onclick = function(){animate(div,800);}// animate(span,300);</script>
實現(xiàn)效果:
總結(jié)
以上是生活随笔為你收集整理的简单的动画函数封装(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目标元素拖动
- 下一篇: 放大镜制作(2)—此方法比较容易理解