2010-06-13 78 views
10

我正在尋找使用Webkit CSS3將一個絕對定位的DIV從一個位置移動到另一個位置,當按下按鈕時,通過更改其左側和右側CSS屬性。但是,我看到的所有示例都使用靜態CSS規則來應用此過渡。使用JavaScript激活Webkit CSS3動畫

我不知道新的位置,所以如何動態應用這個CSS3轉換?

回答

21

一旦定義了轉換,無論您如何更改元素上的CSS值,它都將適用。因此,您可以使用JavaScript應用內聯樣式,並且該元素將生成動畫。所以像這樣的CSS:

left: 100px; 
top: 100px; 
-webkit-transition: top 300ms ease-in 100ms, left 200ms ease-in 50ms; 
-moz-transition: top 300ms ease-in 100ms, left 200ms ease-in 50ms; 
-o-transition: top 300ms ease-in 100ms, left 200ms ease-in 50ms; 
transition: top 300ms ease-in 100ms, left 200ms ease-in 50ms; 

有這樣的功能:

function clickme() { 
    var el = document.getElementById('mydiv'); 
    var left = 300; 
    var top = 200; 
    el.setAttribute("style","left: " + left + "px; top: " + top + "px;"); 
} 

而且你會看到動畫,當你調用該函數。你可以從任何你喜歡的地方獲得左側和頂部的值。 I've done a full example

+0

不錯的完整答案和演示! CSS3動畫探索者的絕佳資源。 – Todd 2010-09-22 22:02:15

+1

謝謝@Todd - 我試着讓自己的答案值得:) – robertc 2010-09-22 23:24:27

+1

是不是更容易切換一個類與關聯的動畫? – Valerij 2011-01-29 21:13:34

0

另一種選擇是使用jQuery Transit移動絕對定位的div左或右:

的Javascript:

$("#btnMoveRight").click(function() { 
    $('#element').transition({ left: '+=50px' }); 
}); 

$("#btnMoveLeft").click(function() { 
    $('#element').transition({ left: '-=50px' }); 
}); 

JS Fiddle Demo

它運作良好,在移動設備和處理您的CSS3 /瀏覽器兼容性爲您。