我认为您正在以复杂的方式处理这个问题(尤其是关于 css):
看看这个:
html(注意倒序)
<div id="slide-pages">
<div class="buttons">
<div class="prev"> < </div>
<div class="next"> > </div>
</div>
<section class="paper-three page">
<div><h1>THREE</h1></div>
</section>
<section class="paper-two page">
<div><h1>TWO</h1></div>
</section>
<section class="paper-one page">
<div><h1>ONE</h1></div>
</section>
</div>
js
代码执行以下操作:
- 滑出最后一页(在代码中!,由于
position: absolute,视觉上它将是第一页)
- 将其作为第一页插入
- 滑回
这样您就完全不必处理 z-index 了。
(function () {
var running = false;
$('.buttons .next').on('click', function() {
if (!running) {
running = true;
$('#slide-pages').find('.page').last().animate({left: '-=700'}, 600, function() {
$(this).insertAfter('#slide-pages .buttons').animate({left: '+=700'}, 600, function () {
running = false;
});
});
}
});
$('.buttons .prev').on('click', function() {
if (!running) {
running = true;
$('#slide-pages').find('.page').first().animate({left: '-=700'}, 600, function() {
$(this).appendTo('#slide-pages').animate({left: '+=700'}, 600, function () {
running = false;
});
});
}
});
}());
css
这不是你的 CSS,所以你可能需要稍微改变一下。我只是想表明你可以用更少的代码来做。例如。不要重复类似的属性。
#slide-pages {
position: relative;
width: 662px;
margin-top: 10px;
}
#slide-pages .buttons .button {
position: absolute;
top: 0;
color: #fff;
cursor: pointer;
background: #000;
height: 34px;
width: 18px;
z-index: 100;
}
#slide-pages .buttons .next {
right: 60px;
}
#slide-pages .buttons .prev {
left: 30px;
}
#slide-pages .page {
position: absolute;
text-align: center;
width: 620px;
height: 60px;
}
#slide-pages .paper-one {
background: #f00;
}
#slide-pages .paper-two {
background: #333;
left: 20px;
top: 20px;
}
#slide-pages .paper-three {
background: #ccc;
left: 40px;
top: 40px;
}
演示:http://jsfiddle.net/3wfnN/3/