3Dスライダー風にスライドするスライドショーをjQueryで作ってみました。
クリックするとスライドします。
↓以下が実際のソースサンプルです。
<script> $(function () { var x = 320, //画像の横幅 zoom = 1.2, //拡大の倍率 imgLength = $("ul li").length, imgLengthFront, imgLengthBack, num = 0, num2 = 0, hantei = true, i = 0; if (imgLength % 2 === 1) { imgLengthFront = parseInt((imgLength / 2) + 1); imgLengthBack = parseInt(imgLength / 2); } else { imgLengthFront = parseInt(imgLength / 2); imgLengthBack = parseInt((imgLength / 2) - 1); } $("ul li").css({ "width": x + "px", "position": "absolute" }); $("ul li:eq(0)").css("opacity", "1"); $("ul li").each(function () { var $this = $(this); if (num < imgLengthFront) { $this.css("left", (100 / imgLengthFront) * num + "%"); } else { $this.css("left", (100 / imgLengthFront) * (imgLength - (num + 1)) * zoom + "%"); } num++; }); $("ul li:gt(" + (imgLengthFront - 1) + ")").css({ "width": (x / zoom) + "px", "height": "auto", "margin-left": "-" + (((x * zoom) - (960 - (x * 2))) / 2) + "px", "z-index": "0", "opacity": "1" }); $("ul li:lt(" + imgLengthFront + ")").css({ "z-index": "50", "opacity": "1" }); $("ul li:eq(1)").css({ "width": (x * zoom) + "px", "height": "auto", "margin-left": "-" + (((x * zoom) - (960 - (x * 2))) / 2) + "px", "z-index": "100", "opacity": "1" }); $("ul li:eq(0), ul li:gt(1)").css({ "margin-top": ($("ul li:eq(1)").height() - $("ul li:eq(0)").height()) / 2 + "px" }); $(" ul li:gt(" + (imgLengthFront - 1) + ")").css({ "margin-top": ($("ul li:eq(1)").height() - $("ul li:eq(0)").height()) + "px" }); $("ul").click(function () { if (hantei) { hantei = false, i = 0, num2 = 0; while (i < imgLength) { var $this = $(this); if (num2 === 0) { $("ul li:eq(0)").animate({ "left": (100 / imgLengthFront) * num2 + "%", "margin-top": (($("ul li:eq(0)").height() * zoom) - $("ul li:eq(0)").height()) + "px", "margin-left": "-" + (((x * zoom) - (960 - (x * 2))) / 2) + "px", "width": x / zoom + "px", "opacity": "1" },1000,function(){ hantei = true; }).css("z-index", "50"); num2++; } else if (num2 === 1) { $("ul li:eq(1)").animate({ "left": (100 / imgLengthFront) * (num2 - 1) + "%", "margin-top": (($("ul li:eq(0)").height() * zoom) - $("ul li:eq(0)").height()) / 2 + "px", "margin-left": "0", "width": x + "px", "opacity": "1" },1000,function(){ $("ul li:eq(0)").css("z-index", "0").appendTo("ul"); hantei = true; }).css("z-index", "50"); num2++; } else if (num2 === 2) { $("ul li:eq(2)").animate({ "left": (100 / imgLengthFront) * (num2 - 1) + "%", "width": (x * zoom) + "px", "margin-top": "0", "margin-left": "-" + (((x * zoom) - (960 - (x * 2))) / 2) + "px", "opacity": "1" },1000).css("z-index", "100"); num2++; } else if (num2 < imgLengthFront) { $("ul li:eq(" + num2 + ")").animate({ "left": (100 / imgLengthFront) * (num2 - 1) + "%", "width": x + "px", "margin-top": (($("ul li:eq(0)").height() * zoom) - $("ul li:eq(0)").height()) / 2 + "px", "margin-left": "0" }, 1000,function(){ hantei = true; }); num2++; hantei = true; } else if (num2 === imgLengthFront) { $("ul li:eq(" + num2 + ")").animate({ "left": (100 / imgLengthFront) * (imgLengthFront - 1) + "%", "width": x + "px", "margin-top": (($("ul li:eq(0)").height() * zoom) - $("ul li:eq(0)").height()) / 2 + "px", "margin-left": "0" }, 1000,function(){ hantei = true; }).css("z-index", "50"); num2++; } else { $("ul li:eq(" + num2 + ")").animate({ "left": ((100 / imgLengthFront) * (imgLength - (num2)) * zoom) + "%", "margin-top": (($("ul li:eq(0)").height() * zoom) - $("ul li:eq(0)").height()) + "px", }, 1000,function(){ hantei = true; }).css("z-index", "0"); num2++; } i++; } } else { return false; } }); }); </script>
<style> * { margin: 0; padding: 0; border: 0; } #main { position: relative; width: 960px; height: 500px; margin: 0 auto; } #main ul li { display: inline-block; width: 320px; height: auto; box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.5); opacity: 0.5; } #main ul li img { width: 100%; height: auto; vertical-align: bottom; } </style>
<div id="main"> <ul><!-- --><li><img src="image/topimg1.jpg"></li><!-- --><li><img src="image/topimg2.jpg"></li><!-- --><li><img src="image/topimg3.jpg"></li><!-- --><li><img src="image/topimg4.jpg"></li><!-- --><li><img src="image/topimg5.jpg"></li><!-- --><li><img src="image/topimg3.jpg"></li><!-- --></ul> </div>