const $wrapper = $thumbs.wrap('
').parent();
const $nav = $wrapper.wrap('
').parent();
// 左右矢印を追加
const $prev = $('
❮
'); // «
const $next = $('
❯
'); // »
$nav.prepend($prev).append($next);
// 1 回のスクロール量(サムネイル 3 枚分)
const step = $thumbs.find("img").outerWidth(true) * 3;
/* 矢印クリック */
$prev.on("click", () => $wrapper.animate({scrollLeft: $wrapper.scrollLeft()-step}, 300, updateArrows));
$next.on("click", () => $wrapper.animate({scrollLeft: $wrapper.scrollLeft()+step}, 300, updateArrows));
/* スクロールやリサイズ時の矢印制御 */
function updateArrows(){
const max = $thumbs[0].scrollWidth - $wrapper.innerWidth(); // 最大スクロール量
const pos = $wrapper.scrollLeft(); // 現在位置
if(max <= 0){ // はみ出し無し → 矢印不要
$prev.addClass("is-off");
$next.addClass("is-off");
}else{
$prev.toggleClass("is-off", pos <= 0);
$next.toggleClass("is-off", pos >= max - 2);
}
}
// スクロールやドラッグでも矢印を更新
$wrapper.on("scroll", updateArrows);
$(window).on("resize", updateArrows);
updateArrows(); // 初期判定
});
/* ---------- サムネイルクリックでメイン画像切替 ---------- */
$(document).on("click", ".thumbnail-parts img", function(){
const src = $(this).attr("src");
const $view = $(this).closest(".thumbnail-nav").prev(".thumbnail-view-parts");
const $new = $("
![]()
").attr("src", src).hide();
$view.find("img").fadeOut(400, function(){
$view.empty().append($new);
$new.fadeIn(400);
});
});
});
js