jQuery的動畫是足夠好,人們都說它的速度慢等,但它是最好的在那裏儘可能瀏覽器的兼容性和性能去。 當然,一旦安裝,greensock速度更快,但似乎沒有人計算額外的服務器請求,CSS有跨瀏覽器問題,儘管jquery已經很慢了,但jQuery動畫方法仍然是最好的,中型項目。
代碼的相關部分:
$(document).ready(function() {
var items = $('.feedbak-logo li');
items.slice(5).hide();
});
var items = $('.feedbak-logo li');
items.click(function() {
items.eq(0).fadeOut(1000);
items.eq(1).fadeOut(1000);
items.eq(0).animate({
left: 50
}, {
duration: 1000,
step: function(now, fx) {
items.gt(0).css("left", now);
}
});
items.eq(5).fadeIn(1000);
items.eq(6).fadeIn(1000);
});
這裏就是一切運行而不會跳動流暢的改進的代碼。
$('#one').click(function(){
original();
});
$('#two').click(function(){
backToOriginal();
});
function original() {
var items = $('.feedbak-logo li');
items.slice(5).css({'opacity': 0});
items.eq(0).animate({opacity: 0, left:'-30px'},500);
items.eq(1).animate({opacity: 0, left:'-30px'},500);
items.eq(5).animate({opacity: 1},500);
items.eq(6).animate({opacity: 1},500);
items.each(function(i) {
setTimeout(function() {
items.removeClass("nonAnimated").addClass("animated");
}, 200 * i);
});
}
function backToOriginal() {
var items = $('.feedbak-logo li');
items.eq(0).animate({opacity: 1, left:'30px'},500);
items.eq(1).animate({opacity: 1, left:'30px'},500);
items.eq(5).animate({opacity: 0},500);
items.eq(6).animate({opacity: 0},500);
items.each(function(i) {
setTimeout(function() {
items.removeClass("animated")
.addClass
("nonAnimated");
}, 100 * i);
});
}
的codepen:
http://codepen.io/damianocel/pen/grRaEW
我不知道從哪裏開始,學習jQuery的動畫文件內而外,實在是最少的最壞的所有壞的東西在那裏。當客戶問您爲什麼網站在一半的移動瀏覽器中不起作用時,這一點就變得清晰了。
不要選擇這樣的元素,總是總是緩存DOM元素引用與Jquery,尤其是與動畫。
對於位在本機JS了不同的方法,試試這個:
http://codepen.io/damianocel/pen/PzYXmv
不知道這是否是有用的,但是這是一個非常類似的原生的js實現,我能做些什麼有啊正在尋找爲,但明天。
嘗試玩弄不透明度而不是淡入淡出;淡入淡出的問題在於它最後會添加一個「display:none」,所以之後的任何元素都會跳起來......動畫不透明度會因淡出和邊距而移動,這會讓您感覺到你想要... – webeno
@webeno現在我明白了。但是現在又出現了另一個問題,我不知道應該如何編輯我的代碼,然後在這裏粘貼,這有點複雜。我需要選擇第一個和最後一個可見的li。在我的情況下,我做了這樣的'var last = jQuery('。feedbak-logo li:visible:last');'。我應該如何做到這一點與不透明?只有在循環中才有可能,或者有沒有更好的方法來做到這一點? – Giedidius