我对jQuery很新,所以我问:
我有3个条件动画在三个div上运行:
var viewport = $(window).width();
if ( viewport < 1400 ) {
$("#panel").animate({marginLeft:"-175px"}, 500 );
$("#colleft").animate({width:"0px", opacity:0}, 400 );
$("#showPanel").show("normal").animate({width:"28px", opacity:1}, 200);
$("#colright").animate({marginLeft:"50px"}, 500);
}else{
$("#colright").fadeIn('slow').animate({marginLeft:"200px"}, 200);
$("#panel").fadeIn('slow').animate({marginLeft:"0px"}, 400 );
$("#colleft").fadeIn('slow').animate({width:"190px", opacity:1}, 400 );
$("#showPanel").animate({width:"0px", opacity:0}, 600).hide("slow");
}
如您所见,这是基于视口执行动画。
我必须在$(window).resize(function() {
和$("#hidePanel").click(function(e){
上重复这些条件。
我是否必须重复代码,还是可以将它们分配给变量?
修改
以下函数无法在条件中起作用。
function collapseMenu(){
$("#panel").animate({marginLeft:"-175px"}, 500 );
$("#colleft").animate({width:"0px", opacity:0}, 400 );
$("#showPanel").show("normal").animate({width:"28px", opacity:1}, 200);
$("#colright").animate({marginLeft:"50px"}, 500);
}
if ( viewport < 1400 ) {
collapseMenu();
}
答案 0 :(得分:0)
如果您将动画代码重构为函数,则可以按以下方式将它们绑定到事件。
$(window).resize(animateDivs);
$("#hidePanel").click(animateDivs);
答案 1 :(得分:0)
将所有内容包装在函数中怎么样?
function runAnimation(){
var viewport = $(window).width();
if ( viewport < 1400 ) {
$("#panel").animate({marginLeft:"-175px"}, 500 );
$("#colleft").animate({width:"0px", opacity:0}, 400 );
$("#showPanel").show("normal").animate({width:"28px", opacity:1}, 200);
$("#colright").animate({marginLeft:"50px"}, 500);
}else{
$("#colright").fadeIn('slow').animate({marginLeft:"200px"}, 200);
$("#panel").fadeIn('slow').animate({marginLeft:"0px"}, 400 );
$("#colleft").fadeIn('slow').animate({width:"190px", opacity:1}, 400 );
$("#showPanel").animate({width:"0px", opacity:0}, 600).hide("slow");
}
}
所以稍后您可以简单地致电:
$(window).resize(function() {
runAnimation();
//....
});
$("#hidePanel").click(function(e){
runAnimation();
//....
});
答案 2 :(得分:0)
待办事项
function widthHanadler() {
if ( viewport < 1400 ) {
$("#panel").animate({marginLeft:"-175px"}, 500 );
$("#colleft").animate({width:"0px", opacity:0}, 400 );
$("#showPanel").show("normal").animate({width:"28px", opacity:1}, 200);
$("#colright").animate({marginLeft:"50px"}, 500);
}else{
$("#colright").fadeIn('slow').animate({marginLeft:"200px"}, 200);
$("#panel").fadeIn('slow').animate({marginLeft:"0px"}, 400 );
$("#colleft").fadeIn('slow').animate({width:"190px", opacity:1}, 400 );
$("#showPanel").animate({width:"0px", opacity:0}, 600).hide("slow");
}
}
并将此函数绑定到您的事件:
$(window).resize(widthHanadler);
$("#hidePanel").click(widthHandler);