现在这让我疯了!我想使用 - margin设置元素'left'的动画。但是,一旦显示了所有子元素,我还想在相反方向上设置相同元素的动画。我的脚本不是那么简单但相似:
timer = setInterval(function(){
var direction = ($('ul','.column').css('margin-left') <= 0)? '-=': '+=';
$('ul','.column').animate({marginLeft:direction+($('li','.column').width())+'px'},500);
},1000);
我也试过$('ul,'.column').position().left <=0
而不是上面的条件。我的问题是margin-left
,position().left
永远不会返回负变量:S。如果变量'should'为负数,则它总是返回0.我可以很容易地计算出我希望动画向相反方向前进的位置,但如果条件不是负数,则不会再起作用。< / p>
我非常感谢为什么margin-left
和position().left
总是返回0而不是-1000或其他什么。但如果你有另一种解决方案,我仍然会很开心:)
答案 0 :(得分:3)
jQuery的CSS margin-left将返回一个字符串,如:20px
你需要使用
parseInt( $('ul','.column').css('margin-left') , 10 )
所以它应该是:
timer = setInterval(function(){
var margLeft = parseInt( $('ul','.column').css('margin-left') , 10);
var direction = margLeft<=0 ? '-=': '+=';
$('ul','.column').animate({ marginLeft: direction+($('li','.column').width()) },500);
},1000);
如果我记得很清楚Chrome有一个问题,那就是动画中没有在CSS中指定的元素的动画应用动画,这意味着:确保在样式表中为元素的边距设置一个值 - 你计划的左边动画。