2016-07-07 98 views
0

我有一個<div>position: absolutejQuery的動畫 - 移動的座標箱

<div style="top:200px; left:400px;"> 

,我希望它很好地慢慢移動到新的座標,例如:

<div style="top:100px; left:500px;"> 

哪些jQuery的動畫效果可以做到這一點?還是有其他解決方案?

預先感謝您

回答

2

您可以嘗試使用您已設置初始位置後絕對動畫功能。另一方面,您可以複製div並移除原始文件,然後使用jQuery中的動畫函數將其移動到新座標。

jQuery(".container").click(function() { 

var position1 = jQuery("#position1").position(); 
alert(position1.top + ', ' + position1.left); 

var position2 = jQuery(this).position(); 
alert(position2.top + ', ' + position2.left); 

}); 

然後

$('.container').click(function(){ 
    var position1 = $('#position1').position(); 

    $(this).animate({ 'top': position1.top + 'px', 'left': position1.left + 'px'}, 150, function(){ 

    }); 
}); 
+0

我不會使用Javascript來爲這樣簡單的動畫設置動畫。它可以很容易地用CSS完成。 –

+0

// @大衛韋斯特怎麼樣?只是CSS? –

+0

看看這個鏈接https://www.kirupa.com/html5/animating_movement_smoothly_using_css.htm –

2

你不應該使用jQuery的動畫這一點。使用CSS更容易,而且看起來更順暢。

您創建具有以下屬性的類:

.animate{ 
    transform: translate(50px, 100px); 
    transition: 1s ease-in-out; 
} 

translate()的第一個值是像素移動到右邊的量,第二是像素的下移量。

所以,如果我們用你給我們的例子中,它應該是:

.animate{ 
    transform: translate(100px, -100px); 
    transition: 1s ease-in-out; 
} 

1stransition是秒的總金額動畫會抓住。你可以在這裏使用小數。

ease-in-out是動畫製作動畫的方式。你可以找到一個完整的列表here

當您想要動畫開始時,只需將該類添加到div即可。下面的代碼將類添加到div當你點擊它:

$("div").click(function() { 
    $("div").addClass("animate"); 
}); 

您確實需要更改的選擇,現在它會做它會在你的頁面的每個div工作。

+0

這是驚人的解決方案,但不幸的是我無法使用它。當我在做面向移動的項目時,Opera mini不支持「轉換」。無論如何非常感謝你的努力! –

+0

@AlexF是的,Opera Mini甚至比IE還差。我不再支持它,因爲只有大約0。我的所有流量中有5%來自Opera Mini。而是顯示一條消息,表明他們應該使用另一個瀏覽器,但如果您不想使用它,我可以理解它,因爲根據CanIuse的說法,5%的互聯網用戶使用Opera Mini。 –