我已經建立了一個簡單的手風琴類型的側面菜單,並看着它,它是非常沉重的。我可以通過哪些方法來減少代碼量和執行時間?什麼將是一個更具編程有效的方式做到這一點
我主要問這是一個學習點。
$('#one').css("height", "22");
$('#dtwo').css("height", "22");
$('#three').css("height", "22");
$('#t1').click(function() {
if ($('#one').hasClass("extended")) {
$('#one').stop(true, true).animate({height: '22px'},500);
$('#one').removeClass("extended");
$('#a1').stop(true, true).animate({opacity: '1'},500);
} else {
$('#one').animate({height: '120' + 'px'},500);
$('#one').addClass("extended");
$('#a1').animate({opacity: '0'},300);
}
});
$('#t2').click(function() {
if ($('#dtwo').hasClass("extended")) {
$('#dtwo').stop(true, true).animate({height: '22px'},500);
$('#dtwo').removeClass("extended");
$('#a2').stop(true, true).animate({opacity: '1'},500);
} else {
var height = 0;
$(this).closest("div").children().each(function(){
height += $(this).outerHeight(true);
});
$('#dtwo').animate({height: height + 5 + 'px'},500);
$('#dtwo').addClass("extended");
$('#a2').animate({opacity: '0'},300);
}
});
$('#t3').click(function() {
if ($('#three').hasClass("extended")) {
$('#three').stop(true, true).animate({height: '22px'},500);
$('#three').removeClass("extended");
$('#a3').stop(true, true).animate({opacity: '1'},500);
} else {
$('#three').animate({height: '270px'},500);
$('#three').addClass("extended");
$('#a3').animate({opacity: '0'},300);
}
});
$('#a1').click(function() {
if ($('#one').hasClass("extended")) {
$('#one').stop(true, true).animate({height: '22px'},500);
$('#one').removeClass("extended");
$('#a1').stop(true, true).animate({opacity: '1'},500);
} else {
$('#one').animate({height: '120px'},500);
$('#one').addClass("extended");
$('#a1').animate({opacity: '0'},300);
}
});
$('#a2').click(function() {
if ($('#dtwo').hasClass("extended")) {
$('#dtwo').stop(true, true).animate({height: '22px'},500);
$('#dtwo').removeClass("extended");
$('#a2').stop(true, true).animate({opacity: '1'},500);
} else {
$('#dtwo').animate({height: '120px'},500);
$('#dtwo').addClass("extended");
$('#a2').animate({opacity: '0'},300);
}
});
$('#a3').click(function() {
if ($('#three').hasClass("extended")) {
$('#three').stop(true, true).animate({height: '22px'},500);
$('#three').removeClass("extended");
$('#a3').stop(true, true).animate({opacity: '1'},500);
} else {
$('#three').animate({height: '270px'},500);
$('#three').addClass("extended");
$('#a3').animate({opacity: '0'},300);
}
});
如果CSS3動畫是一個選項,你會考慮使用它們嗎? –
@JeffreySweeney我想,我沒有真正看過CSS3動畫,但我想像IE7 +可能8不會玩球? – zomboble
@zombole事實上,即使IE 9不能。訣竅是讓手風琴工作(跳到位置),而不管動畫是否工作。它更易於維護。但是,鑑於這是一個家庭作業問題,我假設你的教授要求製作手風琴的動畫高於一切。 –