我基於CSS3過渡構建非jQuery的響應圖像滑塊。強制瀏覽器來觸發迴流,同時改變CSS
結構簡單:視域,且內部相對定位UL左浮動LIS。
我面臨這樣的情況下一個問題:
- 用戶點擊「上一頁」箭頭。
- JS在當前顯示的LI節點之前追加正確的LI。
- 目前UL已成立CSS轉換爲
none 0s linear
防止動畫的變化。在這一刻,我通過滑塊寬度(比如說:從0px到-1200px)減少UL CSS剩餘值,使視圖與原來一樣。 - 現在我改變UL過渡屬性
all 0.2s ease-out
。 - 現在我正在更改UL的左側屬性來觸發CSS3動畫。 (比方說:從-1200px到0px)。
問題是什麼?瀏覽器簡化了更改並且不會製作任何動畫。
Stoyan Stefanov在他的博客here上寫過關於重排問題,但在這種情況下試圖強制重排元素不起作用。
這是一段代碼,這樣做(我跳過了簡化瀏覽器的前綴):
ul.style.transition = 'none 0s linear 0s';
ul.style.left = '-600px';
ul.style.transition = 'all 0.2s ease-out';
ul.style.left = '0px';
這裏是小提琴在行動中看到的問題:http://jsfiddle.net/9WX5b/1/
僅當CSS中的屬性發生更改時纔會出現動畫。沒有必要應用'none 0s linear',直到你改變'left'屬性纔會生成動畫。 –
禁用轉換非常重要,因爲我必須在添加新幻燈片後不可見地修復較舊幻燈片的位置。 – Simon