需求:點(diǎn)擊圖片時(shí),圖片會(huì)左右抖動(dòng),也可以上下抖動(dòng)。
具體代碼如下:
(推薦教程:CSS教程)
html:
<img src="./img/19.jpg" alt="" id="img1">
css:
img { position: absolute; top: 200px; left: 300px; }
js:
<script src="doMove.js"></script> <script> window.onload = function(){ var img1 = document.getElementById('img1'); img1.onclick = function(){ // 先獲得img1的原來left值,在此基礎(chǔ)上進(jìn)行抖動(dòng);parseInt()是把300px的單位去掉只留數(shù)字 var pos = parseInt(getStyle(img1,'left')); var arr = [];//20,-20,18,-18,16,-16,...存放抖動(dòng)的頻率 var timer = null;//開啟定時(shí)器 var num = 0;//一般只要有數(shù)組,那么必定有數(shù)字跟著變化;數(shù)組的第0個(gè),第1個(gè)... for(var i =20;i>0;i-=2){//左右抖動(dòng)的幅度第一次為20px,然后減2 arr.push(i,-i); } arr.push(0); // alert(arr);//測(cè)試一下 // 有抖動(dòng)的頻率之后,要開啟定時(shí)器讓它進(jìn)行抖動(dòng) clearInterval(timer);//開啟定時(shí)器之前要先把定時(shí)器關(guān)閉,防止連續(xù)多次點(diǎn)擊 timer = setInterval(function(){ img1.style.left = pos + arr[num] + 'px';//原來的位置pos,加上數(shù)組中每一個(gè)數(shù)字 num++; if(num === arr.length){//如果數(shù)字等于數(shù)組的長度(就是全部抖完了),關(guān)閉定時(shí)器 clearInterval(timer); } },50); } } </script>
說明:
1、要先引入我們?cè)瓉矸庋b好的動(dòng)畫函數(shù)doMove.js,getStyle()函數(shù)就是這個(gè)函數(shù)里面的函數(shù);
2、parseInt( )是把300px的單位去掉只留數(shù)字300;
3、上下抖動(dòng),只要把left改為top就可以。