以下のコードは、飛び去る画像を表示するためのものです。ただし、これを行うには「次へ」または「前へ」ボタンをクリックする必要があります。各画像で約5秒間停止し、次の画像に変更してから巻き戻しせずに再び開始するタイマーで自動的に発生するようにしたいと思います。(今のところ巻き戻し機能を使用できますが、最終的には連続的にしたいと思います。これは、基本的に、各画像がリターンをスタックの後ろに飛ばさなければならないことを意味します。
<div id="view">
<ul id="stack">
<li><img src="labels/manzonipinotnoir.png" /></li>
<li><img src="labels/figgepinotnoir.png" /></li>
<li><img src="labels/marinusbernardusredwine.png" /></li>
<li><img src="labels/riverbench.png" /></li>
</ul>
</div>
<div class="controls">
<button class="prev" disabled="disabled">Prev</button>
<button class="next" >Next</button>
<a> Featured Wineries</a>
</div>
<script>
(function($) {
var y_space = 50,
z_space = 50;
var view = $('#view'),
lis = $('#stack li'),
prev = $('.controls .prev'),
next = $('.controls .next'),
left = $('#rotate_controls .left'),
centre = $('#rotate_controls .centre'),
right = $('#rotate_controls .right');
var z_index = lis.length,
current_index = 1,
translate_y = y_space *-1,
translate_z = z_space *-1;
lis.each(function() {
this.style['-webkit-transform'] = 'translate3d(0px, ' + translate_y + 'px, ' + translate_z + 'px)';
this.style['-moz-transform'] = 'translate3d(0px, ' + translate_y + 'px, ' + translate_z + 'px)';
this.style['z-index'] = z_index;
$(this).data('translate_y', translate_y);
$(this).data('translate_z', translate_z);
z_index--;
translate_y -= y_space;
translate_z -= z_space;
});
next.bind('click', function() {
if($(this).attr('disabled')) return false;
lis.each(function() {
animate_stack(this, y_space, z_space);
});
lis.filter(':nth-child(' + current_index + ')').css('opacity', 0);
current_index ++;
check_buttons();
});
prev.bind('click', function() {
if($(this).attr('disabled')) return false;
lis.each(function() {
animate_stack(this, -y_space, -z_space);
});
lis.filter(':nth-child(' + (current_index - 1) + ')').css('opacity', 1);
current_index --;
check_buttons();
});
$(document).bind('mousewheel', function(event, delta, deltaX, deltaY) {
if(deltaY >= 0) {
next.trigger('click');
}
else {
prev.trigger('click');
}
});
function check_buttons() {
if(current_index==1) {
prev.attr('disabled', true);
}
else {
prev.attr('disabled', false);
}
if(current_index == lis.length) {
next.attr('disabled', true);
}
else {
next.attr('disabled', false);
}
}
function animate_stack(obj, y, z) {
var new_y = $(obj).data('translate_y') + y;
var new_z = $(obj).data('translate_z') + z;
obj.style['-webkit-transform'] = 'translate3d(0px, ' + new_y + 'px, ' + new_z + 'px)';
obj.style['-moz-transform'] = 'translate3d(0px, ' + new_y + 'px, ' + new_z + 'px)';
$(obj).data('translate_y', new_y)
.data('translate_z', new_z);
}
})(jQuery);
</script>