Javascript 在旋转木马中将DOM操作与样式更改同步时出现问题
不久前我建立了一个基本的图片旋转木马,我终于开始将它从MooTools转移到jQuery,这样我就可以放下MooTools了。我已经让脚本完全正常工作了,但无论出于什么原因,当旋转木马向一个方向滑动时,您都可以看到一个“弹出”窗口,它会自动重置 我试着玩弄它处理所有事情的顺序,但不管是什么,它似乎总是去同步一个部分的一小部分 这是我的代码副本: 代码中有问题的部分如下:Javascript 在旋转木马中将DOM操作与样式更改同步时出现问题,javascript,jquery,Javascript,Jquery,不久前我建立了一个基本的图片旋转木马,我终于开始将它从MooTools转移到jQuery,这样我就可以放下MooTools了。我已经让脚本完全正常工作了,但无论出于什么原因,当旋转木马向一个方向滑动时,您都可以看到一个“弹出”窗口,它会自动重置 我试着玩弄它处理所有事情的顺序,但不管是什么,它似乎总是去同步一个部分的一小部分 这是我的代码副本: 代码中有问题的部分如下: styles['position'] = 'absolute'; styles[self.params.axis] = -32
styles['position'] = 'absolute';
styles[self.params.axis] = -32768;
$(self.list[0]).css(styles).hide();
$(self.list[0]).appendTo(self.carousel);
$(self.list[conf.mi]).css(self.params.axis, (100-conf.pr)+'%');
styles = {};
styles['position'] = 'relative';
styles[self.params.axis] = 'auto';
$(self.list[conf.mi]).css(styles);
问题是
$.fadeOut()
在元素上设置显示:none
,这会在setTimeout()
回调中导致一些奇怪的渲染问题。如果改用$.fadeTo()
,效果会更好:
if (self.params.direction) {
// Go forward
self.carousel.css(self.params.axis, '-'+conf.pr+'%');
$(self.list[0]).fadeTo(400, 0);
$(self.list[conf.mi]).css(self.params.axis, '100%').fadeTo(400, 1);
} else {
// Go backward
self.carousel.css(self.params.axis, conf.pr+'%');
$(self.list[conf.mi-1]).fadeTo(400, 0);
self.list.last().css(self.params.axis, '-'+conf.pr+'%').fadeTo(400, 1);
}
为简单起见,我使用了400ms的持续时间,但您可以将其设置为您需要的任何时间
是什么让你相信这是代码中有问题的部分?是代码块将样式重置为“默认”值并编辑DOM元素。这是唯一一个我认为是核心问题的部分,尽管我认为设置和制作动画的块完全可能有一个错误,该错误会级联到这里的重置。