我目前有这个代码检查导航的左边距,并相应地向左滚动。但是,这个方法很慢,所以我想知道如何将它更改为for循环或类似的东西来捕获200的每个倍数,然后相应地为导航设置动画。
这是我目前的代码,因为如果需要达到-5000等,你可以说效率不高
修改
这些是我的功能,但它们不起作用
function goleft(){
var nav = $("#innernavigation");
var navmargin = parseInt(nav.css("margin-left"), 10);
if (navmargin != 0)
{
//time!
if (navmargin > -nav.width() && navmargin < -200)
{
nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
}
if (navmargin > 0)
{
nav.css({'marginLeft':'0px'});
}
}
}
function goright(){
var nav = $("#innernavigation");
var navmargin = parseInt(nav.css("margin-left"), 10);
if (navmargin != -nav.width())
{
//time!
if (navmargin > 0 && navmargin < -nav.width())
{
nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
}
if (navmargin < -nav.width())
{
nav.css({'marginLeft':'-' + nav.width()});
}
}
}
答案 0 :(得分:2)
您可以在单个if语句中执行类似的操作。
if (navmargin > -5000 && navmargin < -200)
{
nav.animate({'marginLeft': (-((Math.floor(navmargin / 200)-1) * 200) + 'px'});
}
答案 1 :(得分:0)
nav.animate({'marginLeft': (Math.floor(Math.abs(navmargin) / 200) * -200) + 'px'})
答案 2 :(得分:0)
快速猜测(尚未测试):
if (navmargin<-200 && navmargin>-5000) {
nav.animate({'marginLeft':((navmargin%200-1)*-200)+'px'});
}