我正在编写一个轮播脚本,该脚本使用网络转换来滑动图像。
这是一个非常简化的关于它如何工作的小提琴。 http://jsfiddle.net/tUhZe/6/
我想知道是否有人可以对如何减少每次过渡开始时发生的昂贵重绘有任何好主意?
我尝试将 50 张图片添加到此轮播中,但它导致了性能上的重大问题。
window.setInterval( function () {
var element = $('#container'),
active = $('.active'),
next = active.next('.slide');
if (!next.length) {
next = element.find('.slide:eq(0)');
}
// Move next image into position, ready to slide
next.addClass('next');
// Slight delay for next image to move into position
window.setTimeout( function () {
// Start moving active image out
active.addClass('prev');
// Start moving next image in
next.addClass('active')
.removeClass('next')
.bind('webkitTransitionEnd', function () {
next.unbind('webkitTransitionEnd');
// Move offscreen
active.removeClass('active prev next');
// Reassign active
active = next;
});
}, 100);
}, 2000);
简而言之,这就是脚本的工作方式:
- 活动图像在视图中(给定类“活动”)。所有其他图像(没有“活动”类)都在屏幕外(顶部:9999px)。
- 下一个图像移动到活动图像旁边,为过渡做准备。
- 活动图像类和下一个图像类被更改,这会触发两者同时从左向右滑动。
在过渡结束时,活动图像位于屏幕外。
提前致谢。