js實現簡單的動畫效果之移動

來源:互聯網
上載者:User

標籤:detail   意思   style   pos   turn   dong   col   數字   body   

不準時更新的日常,這次我們使用javaScript實現一個簡單的動畫移動效果,其思路想法很簡單,就是採用“CSS DOM”,對元素的位置進行改變。然後使用setTimeout()函數,對改變位置的函數進行反覆調用,讓文字或圖片進行移動,行成動畫效果。

廢話不多說,直接上code:

 

這是HTML:

<body>

<p id="message">
逝者如斯夫,不舍晝夜。
</p>

<script src="js/initPosition.js"></script>
<script src="js/onload.js"></script>
<script src="js/動畫/donghua.js"></script>
<script src="js/final.js"></script>
<script src="js/動畫/jishu.js"></script>
</body>

 

這是initPosition:   其作用就是擷取元素的初始化位置。

function initPos(){

var elem=document.getElementById("message");     //擷取id message
elem.style.color="#"+randomColor();    //這是自己定義的隨機顏色函數,後面會上代碼。
elem.style.position="absolute";     //DOM定義樣式,位置等
elem.style.left="30px";
elem.style.top="50px";
moveElement("message",500,500,10); //欲知詳情請往下看

}

 

這是onload.js: 頁面載入完成後調用inipos()函數

window.onload=function(){
initPos();
}

 

這是donghua.js 也就是實現文字或圖片移動的關鍵

function moveElement(elementID,final_x,final_y,interval){  //參數分別為id選取器的值,x 軸上目的位置,y軸上目的位置,函數執行的時間間隔
  


var elem=document.getElementById(elementID); //擷取id,此處也即是message

var xpos=parseInt(elem.style.left); //擷取初始,採用parsInt函數,將字串變成數字。為什麼要換成數字?原因是我們要將這個位置與目的位子進行比較
var ypos=parseInt(elem.style.top);

if(xpos<final_x){  //位置比較,如果這個元素的位置小於目的位置,那麼這個元素初始位置增加,
xpos++;
}
if(xpos>final_x){ //如果這個位置大於目的位置,那麼初始位置 --“”
xpos--;
}
if(ypos>final_y){
ypos--;
}
if(ypos<final_y){
ypos++;
}
if(xpos==final_x&&ypos==final_y){  //咳咳,這個下面會說,可以接著往下看
final();
}
elem.style.left=xpos+"px";  //上面我們為了與目的位置進行比較而將初始位置變成數字,這樣我們是無法改變元素樣式的,所以我們這裡加上"px";
elem.style.top=ypos+"px";

var repeat="moveElement(‘"+elementID+"‘,+"+final_x+","+final_y+","+interval+")"; //把函數賦給變數,方便下面的書寫使用,不然setTimeOut裡面放一長串的代碼,看起來是很痛苦的。
movment=setTimeout(repeat,interval); // setTImeout()函數,其意思是間隔interval(參數)時間調用一次repeat(函數,此處函數為moveElement()函數);
}

這是final.js  :

function final(){
location.reload(); //o(╥﹏╥)o,為了反覆看動畫移動,我這裡很粗暴的直接實現了頁面重新整理。。。
}

function randomColor(){
var color=Math.ceil(Math.random()*1700).toString(16);  //隨機顏色函數,改變文字顏色,讓文字動畫看起來更明顯。
return color;
}

 

效果可以查看:https://runjs.cn/detail/gzxxneoo    

暫時將代碼放到run.js展示。 但是每次重新整理頁面都會卡一下。看來每次載入一下的效果並不好,看不清可以手動重新整理頁面。

js實現簡單的動畫效果之移動

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.