前へ/次へボタンを備えた最もシンプルな垂直カルーセルを作成しています。私はほとんどそこにいますが、私は次のことを理解していません:
var shortnewsblockHeight = $(".shortnewsblock").outerHeight();
var totalnewsblocks = $(".shortnewsblock").length;
var i = 0;
$(".stamp.long a.prev").css({ "opacity": "0.3", "text-decoration": "none", "cursor": "default" });
goDown();
goUp();
function goDown() {
$(".stamp.long a.next").click(function () {
$(".stamp.long a.prev").animate({
'opacity': '1'
}, 300);
$(".stamp.long a.prev").css({ "text-decoration": "underline", "cursor": "pointer" });
i++;
if (i != (totalnewsblocks - 5)) {
$("#shortnewsblocks > #inner").stop().animate({
'marginTop': '-=' + shortnewsblockHeight
}, 600);
} else {
$("#shortnewsblocks > #inner").stop().animate({
'marginTop': '-=' + shortnewsblockHeight
}, 600);
$(".stamp.long a.next").animate({
'opacity': '0.3'
}, 300);
$(".stamp.long a.next").css({ "text-decoration": "none", "cursor": "default" });
$(".stamp.long a.prev").animate({
'opacity': '1'
}, 300);
$(".stamp.long a.prev").css({ "text-decoration": "underline", "cursor": "pointer" });
}
return false;
});
}
function goUp() {
$(".stamp.long a.prev").click(function () {
i--;
if (i != 0) {
$("#shortnewsblocks > #inner").stop().animate({
'marginTop': '+=' + shortnewsblockHeight
}, 600);
$(".stamp.long a.next").animate({
'opacity': '1'
}, 300);
$(".stamp.long a.next").css({ "text-decoration": "underline", "cursor": "pointer" });
} else {
$("#shortnewsblocks > #inner").stop().animate({
'marginTop': '+=' + shortnewsblockHeight
}, 600);
$(".stamp.long a.prev").animate({
'opacity': '0.3'
}, 300);
$(".stamp.long a.prev").css({ "text-decoration": "none", "cursor": "default" });
}
return false;
});
}
前へ/次へのボタンのクリックが速すぎると、高さがスクランブルされ、カルーセルの「ブロックスタイル」のアニメーションが失われます。
カルーセルでスクロールする要素がなくなると、ボタンがフェードアウトします(カーソルがデフォルトになるため、エンドユーザーはクリックしようとしません)。ただし、エンドユーザーは引き続きクリックしてカルーセルを台無しにすることができるため、完全に無効にする必要があります。
乾杯!
JSFiddle: http: //jsfiddle.net/REVDc/1/