【发布时间】:2013-01-29 17:26:56
【问题描述】:
我正在编写一个轮播脚本,该脚本使用网络转换来滑动图像。
这是一个关于它如何工作的真正简化的小提琴。 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);
简而言之,脚本是这样工作的:
- 活动图像在视图中(给定类“活动”)。所有其他图像(没有“活动”类)都在屏幕外(顶部:9999 像素)。
- 下一张图片移动到活动图片旁边,为过渡做准备。
- 活动图像类和下一个图像类已更改,这会触发两者同时从左向右滑动。
-
在过渡结束时,活动图像位于屏幕外。
提前致谢。
【问题讨论】:
标签: javascript css webkit css-transitions css-transforms