我使用knockout和jquery构建了一个图像旋转木马。为了动画幻灯片,我真的想使用CSS过渡,而不是使用jquery animate。我已经接近实现了这个目标,但是遇到了一个问题。在下面的代码中,“slideRight”部分不起作用,但else部分运行正常。发生的情况是跳过了margin-left 0的过渡,尽管已经添加了过渡类。
我已经在这里创建了一个JSFiddle:http://jsfiddle.net/vnw57nx0/2/ 如您在fiddle中所见,轮播图在幻灯片之间从右到左平滑过渡。
但是,如果您在javascript中找到这行代码:
将其翻译为中文:“并将其更改为:”
幻灯片应该倒序循环播放。 它们确实是这样做的,但它们没有被动画化。 有趣的是,如果我调试脚本并逐步执行,它就可以正常工作。 这让我想到可能是一个时间问题,也许我需要使用回调函数,但jquery中的.insertBefore、.css和.addClass都是同步的。
你有什么想法如何修复这个代码,如果我不调试它就不能工作?
if (slideRight) {
$(requestedElement).insertBefore(currentElement);
slideContainer.css('margin-left', -$(self.carousel).width());
slideContainer.addClass('transition');
slideContainer.css('margin-left', 0);
} else {
$(requestedElement).insertAfter(currentElement);
slideContainer.addClass('transition');
slideContainer.css('margin-left', -$(self.carousel).width());
}
我已经在这里创建了一个JSFiddle:http://jsfiddle.net/vnw57nx0/2/ 如您在fiddle中所见,轮播图在幻灯片之间从右到左平滑过渡。
但是,如果您在javascript中找到这行代码:
self.setIndex(self.currentIndex() + 1);
将其翻译为中文:“并将其更改为:”
self.setIndex(self.currentIndex() - 1);
幻灯片应该倒序循环播放。 它们确实是这样做的,但它们没有被动画化。 有趣的是,如果我调试脚本并逐步执行,它就可以正常工作。 这让我想到可能是一个时间问题,也许我需要使用回调函数,但jquery中的.insertBefore、.css和.addClass都是同步的。
你有什么想法如何修复这个代码,如果我不调试它就不能工作?