1

这现在快把我逼疯了!我想使用 - 边距为元素“左”设置动画。但是,一旦显示了所有子元素,我也想在相反的方向上为相同的元素设置动画。我的脚本不是那么简单但类似:

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。如果变量“应该”为负,它总是返回为 0。我可以很容易地计算出我希望动画朝相反方向移动的位置,但如果条件不是负数,这将不起作用。

我非常感谢您对为什么margin-leftposition().left始终返回 0 而不是 -1000 或其他什么的一些见解。但是,如果您有替代解决方案,我仍然会很高兴:)

4

1 回答 1

3

jQuery 的 CSS margin-left 将返回一个字符串,如:20px你需要摆脱 'px' 使用

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 中指定应用动画的属性,这意味着:确保在样式表中为您计划动画的元素的左边距设置一个值。

于 2012-12-29T11:55:46.633 回答