/* 用法:$("#focus").Jfocus({ path:"top" //path表示图片滚动方向,默认向上滚动 ,可设置left滚动 time:"3000" //图片滚动时间,默认3000毫秒 auto:"true" //是否自动滚动 number:"true" //是否显示按钮数字 bgdiv:"true" //是否显示背景标题 }); 整体focus骨架不变,依然是常用的结构如下: <div id="focus"> <ul> <li><a href="#"><img src="图片1" alt /></a></li> <li><a href="#"><img src="图片2" alt /></a></li> <li><a href="#"><img src="图片3" alt /></a></li> <li><a href="#"><img src="图片4" alt /></a></li> </ul> </div> 整体样式不变,可以更改 id 名称,样式属性值。但不能更改按钮样式名 btn 。更改焦点图显示大小,请修改对应样式值 #focus {width:490px; height:170px; overflow:hidden; position:relative;} #focus ul {height:380px; position:absolute;} #focus ul li {float:left; width:490px; height:170px;} #focus ul li img { width:490px; height:170px;} #focus .btn {position:absolute; width:490px; height:24px; left:0; bottom:5px; text-align:right} #focus .btn span {display:inline-block; _display:inline; _zoom:1; width:20px; height:20px; line-height:20px; border-radius:20px;margin-right:15px; background:#f90; color:#fff; text-align:center; font-size:14px; font-family:"Microsoft YaHei",SimHei; cursor:pointer;font-weight:bold; } #focus .btn span.on {background:#fff !important; color:#f80;} */ (function ($) { $.fn.Jfocus = function (options) { var defaults = {path: "top", time: "3000", auto: "true", number: "false", bgdiv: "false"}; //定义图片默认滚动方向 var opts = $.extend({}, defaults, options); var $this = $(this); var $objul = $this.find("ul"); var sWidth = $this.width(); //获取焦点图的宽度 var sHeight = $this.height(); //获取焦点图的高度 var $objli = $objul.find("li"); var len = $objli.length; //获取焦点图个数 var index = 0; var picTimer; var timer; //以下代码添加数字按钮 if (len != 1) { var btnhtml = "<div class=‘btn‘>"; if (opts.bgdiv == "true") { var btnbghtml = "<div class=‘btnbg‘><strong></strong></div>" $this.append(btnbghtml); showTit(0); } if (opts.number == "true") { for (var i = 0; i < len; i++) { i == 0 ? btnhtml += "<span class=‘on‘>" + 1 + "</span>" : btnhtml += "<span>" + (i + 1) + "</span>"; } } else { for (var i = 0; i < len; i++) { i == 0 ? btnhtml += "<span class=‘on‘></span>" : btnhtml += "<span></span>"; } } btnhtml += "</div>"; $this.append(btnhtml); } var $objspan = $this.find("span"); //判断图片滚动方向 if (opts.path == "left") { $objul.css("width", sWidth * (len + 1)); //如果左右滚动,计算出外围ul元素的宽度 } else { $objli.css("float", "none"); //如果上下滚动,清除li的左浮动 } //为数字按钮添加鼠标滑入事件,以显示相应的内容 $objspan.hover(function () { var that = this; timer = setTimeout(function () { index = $objspan.index(that); showTit(index); showPics(index); }, 200); }, function () { clearTimeout(timer); }); //鼠标滑上焦点图时停止自动播放,滑出时开始自动播放 $this.hover(function () { clearInterval(picTimer); }, function () { interval(); }); if (opts.auto = "true") { function interval() { picTimer = setInterval(function () { if (index == len) { //如果索引值等于li元素个数,说明最后一张图播放完毕,接下来要显示第一张图,即调用showFirPic(),然后将索引值清零 showFirPic(); index = 0; } else { //如果索引值不等于li元素个数,按普通状态切换,调用showPics() showPics(index); showTit(index); } index++; }, opts.time); //time自动播放的间隔 } interval(); } function showTit(index) { //显示标题 $tit = $objli.find("img").eq(index).attr("title"); $(".btnbg").find("strong").text($tit); } //显示图片函数,根据接收的index值显示相应的内容 function showPics(index) { if (opts.path == "left") { var nowLeft = -index * sWidth; //根据index值计算ul元素的left值 $objul.stop(true, false).animate({"left": nowLeft}, 500); //通过animate()调整ul元素滚动到计算出的position $objspan.removeClass("on").eq(index).addClass("on"); //为当前的按钮切换到选中的效果 } else { var nowTop = -index * sHeight; $objul.stop(true, false).animate({"top": nowTop}, 500); $objspan.removeClass("on").eq(index).addClass("on"); } } function showFirPic() { //最后一张图自动切换到第一张图时专用 $objul.append($objli.first().clone()); if (opts.path == "left") { var nowLeft = -len * sWidth; //通过li元素个数计算ul元素的left值,也就是最后一个li元素的右边 $objul.stop(true, false).animate({"left": nowLeft}, 500, function () { //在动画结束后把ul元素重新定位到起点,然后删除最后一个复制过去的元素 showTit(0); $objul.css("left", "0"); $objli.last().next().remove(); }); } else { var nowTop = -len * sHeight; //top值 $objul.stop(true, false).animate({"top": nowTop}, 500, function () { showTit(0); $objul.css("top", "0"); $objli.last().next().remove(); }); } $objspan.removeClass("on").eq(0).addClass("on"); //为第一个按钮添加选中的效果 } };})(jQuery);
时间: 2024-10-09 06:31:02