实现了百叶窗、左右、上下的焦点图片切换,兼容IE 6-10 ,firefox,chorme.
源码下载地址:http://download.csdn.net/detail/aofengdaxia/6898081
插入几种效果:
主要代码:
/** * Created by aofengdaxia on 14-2-4. */ (function ($) { $.fn.slider = function (option) { var defaults = { stay: 3000, type: "box", speed: 600, direction: "leftRight", rowNum: 5, columnNum: 10, boxOut: { width: "0px", height: "0px", opacity: "0"} } var index = 0; var next = 1; var timer; var opt = $.extend(defaults, option); var stage = $(this); var sw = stage.width(); var sh = stage.height(); var pics = stage.children("img"); if ($(this).length > 1) { pics.hide(); alert("please config the slider pic. make sure single object"); return; } stage.html(""); if (opt.direction != "leftRight" && opt.type != "box") { stage.html("<div style='width: " + sw + "px; height: " + sh + "px; overflow: hidden;'><div class='tbStage' style=' overflow:hidden; '></div></div>"); stage.find(".tbStage").append(pics); pics.css("float", "left"); } else { stage.append(pics); stage.css("white-space", "nowrap"); } var totalNum = pics.length; stage.css("overflow", "hidden"); pics.css("width", sw + "px"); pics.css("height", sh + "px"); if (opt.type == "box") { pics.hide(); stage.append("<div style=' width: " + sw + "px; height: " + sh + "px; overflow:hidden;' class='slider1'></div>"); stage.append("<div style=' position: absolute; width: " + sw + "px; height: " + sh + "px; overflow:hidden; " + "margin-top:-" + sh + "px;' class='slider2'></div>") stage.find(".slider1").html("<img src='" + pics.eq(index).attr("src") + "' " + "style='width:" + sw + "px; height:" + sh + "px' />"); stage.find(".slider1").css("z-index", "0"); stage.find(".Slider2").css("z-index", "1"); } addBtn(); addTimer(); stage.find(".tPager").click(function () { clearInterval(timer); var nIndex = $(this).attr("index"); change(index, nIndex); index = nIndex; addTimer(); }); function addBtn() { var pl = pics.length; var html = ""; html += "<div style=' margin-top: -30px; margin-left: " + (sw - pl * 25 - 30) + "px; height: 20px; position: absolute; z-index: 9999'>" for (var i = 0; i < pl; i++) { html += "<span class='tPager' index='" + i + "' style='cursor:pointer; display: block; width: 15px; height: 15px; float: left; margin-left: 10px; background-color: aquamarine'></span>" } html += "</div>" stage.append(html); } function addTimer() { timer = setInterval(function () { next = parseInt(index) + 1; if (next >= totalNum) { next = 0; } change(index, next); index = next; }, opt.stay); } function change(i, n) { if (opt.type == "box") { stage.find(".slider1").html("<img src='" + pics.eq(n).attr("src") + "' style='width:" + sw + "px; height:" + sh + "px' />"); MakeBoxes(pics.eq(i)); $(".boxes").each(function () { $(this).animate(opt.boxOut, opt.speed); }); } else { MoveTo(i, n); } stage.find(".tPager[index=" + i + "]").css("border", "0px solid black").css("backgroundColor", "aquamarine"); stage.find(".tPager[index=" + n + "]").css("border", "1px solid red").css("backgroundColor", "red"); } function MakeBoxes(obj) { var r = opt.rowNum; var c = opt.columnNum; var bw = Math.round(sw / c); var bh = Math.round(sw / r); var htmls = ""; var ii = 0; for (var j = 0; j < r; j++) { for (var i = 0; i < c; i++) { var ml = -1 * bw * i; var mt = -1 * bh * j; htmls += "<div style='position: absolute; margin-left: " + (-1 * ml) + "px; " + "margin-top: " + (-1 * mt) + "px; width: " + bw + "px; height: " + bh + "px; overflow: hidden; float: left; z-index:1'" + " class='boxes' index=" + ii + ">" htmls += "<img src='" + obj.attr("src") + "' style='margin-left: " + ml + "px; margin-top:" + mt + "px; width: " + sw + "px; height: " + sh + "px; z-index:1;' />"; htmls += "</div>" ii++; } } stage.find(".slider2").html(htmls) } function MoveTo(i, n) { if (opt.direction == "leftRight") { var ml = -1 * n * sw; pics.eq(0).animate({ marginLeft: ml + "px"}, opt.speed); } else { var mt = -1 * n * sh; stage.find(".tbStage").animate({ marginTop: mt + "px"}, opt.speed); } } } })(jQuery);使用方法
<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="Script/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="Slider.js"></script> <link href="main.css" type="text/css"/> <script type="text/javascript"> $(document).ready(function () { $(".focus").slider({ type:"move", direction:"leftRight",stay:4000}); $(".focus2").slider({ type:"move", direction:"topBottom",stay:3000}); $(".focus3").slider({ type:"box", columnNum:30, rowNum:20,stay:2000}); }); </script> </head> <body> <div class="focus" style="width: 660px; height: 300px; margin:0 auto; "> <img src="images/1.jpg"/> <img src="images/2.jpg"/> <img src="images/3.jpg"/> <img src="images/4.jpg"/> <img src="images/5.jpg"/> <img src="images/6.jpg"/> </div> <div class="focus2" style="width: 660px; height: 300px; margin:0 auto; "> <img src="images/1.jpg"/> <img src="images/2.jpg"/> <img src="images/3.jpg"/> <img src="images/4.jpg"/> <img src="images/5.jpg"/> <img src="images/6.jpg"/> </div> <div class="focus3" style="width: 660px; height: 300px; margin:0 auto; "> <img src="images/1.jpg"/> <img src="images/2.jpg"/> <img src="images/3.jpg"/> <img src="images/4.jpg"/> <img src="images/5.jpg"/> <img src="images/6.jpg"/> </div> </body> </html>