解决方案 »
- ***怎样获取鼠标在网页上移动的位置(x,y),然后让div的bottom等于鼠标的x,y.
- 最最复杂的一个JS效果,怎么实现
- 两个代码文件让JavaScript程序员爱上Python,谨此献给JavaScript战斗者。
- 请问有人有网页MSN在线联系的代码么?
- 怎么计算这层下个目标的top和left呢
- 好何将两个文本框中输入的数字相加后即时发应在第三个文本框里?
- execCommand 能否插入 FLASH 动画呢?谢谢~~~
- 用innerHTML出来的页面 就不能通过事件句柄调用函数了吗???
- 请问怎样在HTML的编程环境下,能直接读取到JPG和GIF图片文件的高度和宽度(用pixel表示)?
- 新手,求大神帮助: 用原生JS实现下图效果;在线等 急
- 双击图标打开软件用js怎么做?
- 左边列表,右边iframe中打开页面
封装成插件有2步,focus抽象为调用对象,即把所有focus出现的地方用this代替,this就是指向的focus,
然后就是默认参数的配置。比如.pre,.next有可能下一个结构会发现改变。这时候通过参数的形式传过来。
由于没有html结构,改完之后可能还需要微调。大概思路就是这样。$.fn.focusImg = function(options){
var conf = $.extend({
pre : '.pre',
next : '.next'
}, options);
var that = $(this);
var pre = that.find(conf.pre);
var next = that.find(conf.next);
var sWidth = that.width(); //获取焦点图的宽度(显示面积)
var ul = that.find('ul');
var len = ul.find('li').length; //获取焦点图个数
var index = 0;
var picTimer; //以下代码添加数字按钮和按钮后的半透明条,还有上一页、下一页两个按钮
var btn = "<div class='btnBg'></div><div class='btn'>";
for(var i=0; i < len; i++) {
btn += "<span></span>";
}
btn += "</div><div class='preNext pre'></div><div class='preNext next'></div>"; that.append(btn);
that.find(".btnBg").css("opacity",0.5); //为小按钮添加鼠标滑入事件,以显示相应的内容
var span = that.find('.btn span')
span.css("opacity",0.4).mouseenter(function() {
index = span.index(this);
showPics(index);
}).eq(0).trigger("mouseenter"); //上一页、下一页按钮透明度处理
that.find(".preNext").css("opacity",0.2).hover(function() {
$(this).stop(true,false).animate({"opacity":"0.5"},300);
},function() {
$(this).stop(true,false).animate({"opacity":"0.2"},300);
}); //上一页按钮
pre.click(function() {
index -= 1;
if(index == -1) {index = len - 1;}
showPics(index);
}); //下一页按钮
next.click(function() {
index += 1;
if(index == len) {index = 0;}
showPics(index);
}); //本例为左右滚动,即所有li元素都是在同一排向左浮动,所以这里需要计算出外围ul元素的宽度
ul.css("width",sWidth * (len)); //鼠标滑上焦点图时停止自动播放,滑出时开始自动播放
that.hover(function() {
clearInterval(picTimer);
},function() {
picTimer = setInterval(function() {
showPics(index);
index++;
if(index == len) {index = 0;}
},4000); //此4000代表自动播放的间隔,单位:毫秒
}).trigger("mouseleave"); //显示图片函数,根据接收的index值显示相应的内容
function showPics(index) { //普通切换
var nowLeft = -index*sWidth; //根据index值计算ul元素的left值
ul.stop(true,false).animate({"left":nowLeft},300); //通过animate()调整ul元素滚动到计算出的position
span.removeClass("on").eq(index).addClass("on"); //为当前的按钮切换到选中的效果
span.stop(true,false).animate({"opacity":"1.0"},300).eq(index).stop(true,false).animate({"opacity":"1"},300); //为当前的按钮切换到选中的效果
}
}$('#focus').focusImg({
pre : '.pre',
next : '.next',
});
<div id="focus">
<ul>
<li><a href="#"><img /></a></li>
</ul>
</div>$("#focus").Focus({pre:false,next:false,bg:false});jQuery.fn.extend({
"Focus":function(options){
options = options || {};
(function(FOCUS,opt){
var sWidth = FOCUS.width();
var len = FOCUS.find("ul li").length;
var index = 0;
var picTimer;
var btn ="";
if(opt.bg==undefined || (opt.bg!=undefined && opt.bg===true)) btn+="<div class='btnBg'></div><div class='btnTitle' style='position:absolute; left:0;bottom:0; height:20px; line-height:20px; padding-left:5px; width:400px; color:#efefef;'></div>";
if(opt.blocks==undefined || (opt.blocks!=undefined && opt.blocks===true)) {
btn+="<div class='btn'>";
for(var i=0; i < len; i++) {
btn += "<span>" + ((opt.numbers && opt.numbers===true) ? (i+1):"") + "</span>";
}
btn += "</div>";
}
if(opt.pre==undefined || (opt.pre!=undefined && opt.pre===true)) btn+="<div class='preNext pre'></div>";
if(opt.next==undefined || (opt.next!=undefined && opt.next===true)) btn+="<div class='preNext next'></div>";
FOCUS.append(btn);
FOCUS.find(".btnBg").css("opacity",0.5);
FOCUS.find(".btn span").css("opacity",0.4).click(function() {
index = FOCUS.find(".btn span").index(this);
showPics(index);
}).eq(0).trigger("click");
FOCUS.find(".preNext").css("opacity",0.2).hover(function() {
$(this).stop(true,false).animate({"opacity":"0.5"},300);
},function() {
$(this).stop(true,false).animate({"opacity":"0.2"},300);
});
FOCUS.find(".pre").click(function() {
index -= 1;
if(index == -1) {index = len - 1;}
showPics(index);
});
FOCUS.find(".next").click(function() {
index += 1;
if(index == len) {index = 0;}
showPics(index);
});
FOCUS.find("ul").css("width",sWidth * (len));
FOCUS.hover(function() {
clearInterval(picTimer);
},function() {
DO();
}).trigger("mouseleave");
function DO(){
picTimer = setInterval(function() {
showPics(index);
index++;
if(index == len) {index = 0;}
},3000);
}
function showPics(index) {
var nowLeft = -index*sWidth;
var c = FOCUS.find("ul li").get(index);
var title = $($(c).find("a").get(0)).attr("title");
title = title || "";
FOCUS.find(".btnTitle").html(title);
FOCUS.find("ul").stop(true,false).animate({"left":nowLeft},300);
FOCUS.find(".btn span").stop(true,false).animate({"opacity":"0.4"},300).eq(index).stop(true,false).animate({"opacity":"1"},300);
}
})(this,options);
}
});
html是这样的
<div id="focus">
<ul>
<li><a href="http://www.lanrentuku.com/" target="_blank"><img src="img/01.jpg" alt="QQ商城焦点图效果下载" /></a></li>
<li><a href="http://www.lanrentuku.com/" target="_blank"><img src="img/02.jpg" alt="QQ商城焦点图效果教程" /></a></li>
<li><a href="http://www.lanrentuku.com/" target="_blank"><img src="img/03.jpg" alt="jquery商城焦点图效果" /></a></li>
<li><a href="http://www.lanrentuku.com/" target="_blank"><img src="img/04.jpg" alt="jquery商城焦点图代码" /></a></li>
<li><a href="http://www.lanrentuku.com/" target="_blank"><img src="img/05.jpg" alt="jquery商城焦点图源码" /></a></li>
</ul>
</div><style type="text/css">
* {margin:0; padding:0;}
body {font-size:12px; color:#222; font-family:Verdana,Arial,Helvetica,sans-serif; background:#f0f0f0;}
.clearfix:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}
.clearfix {zoom:1;}
ul,li {list-style:none;}
img {border:0;}.wrapper {width:800px; margin:0 auto; padding-bottom:50px;}h1 {height:50px; line-height:50px; font-size:22px; font-weight:normal; font-family:"Microsoft YaHei",SimHei;}.shuoming {margin-top:20px; border:1px solid #ccc; padding-bottom:10px;}
.shuoming dt {height:30px; line-height:30px; font-weight:bold; text-indent:10px;}
.shuoming dd {line-height:20px; padding:5px 20px;}/* qqshop focus */
#focus {width:800px; height:280px; overflow:hidden; position:relative;}
#focus ul {height:380px; position:absolute;}
#focus ul li {float:left; width:800px; height:280px; overflow:hidden; position:relative; background:#000;}
#focus ul li div {position:absolute; overflow:hidden;}
#focus .btnBg {position:absolute; width:800px; height:20px; left:0; bottom:0; background:#000;}
#focus .btn {position:absolute; width:780px; height:10px; padding:5px 10px; right:0; bottom:0; text-align:right;}
#focus .btn span {display:inline-block; _display:inline; _zoom:1; width:25px; height:10px; _font-size:0; margin-left:5px; cursor:pointer; background:#fff;}
#focus .btn span.on {background:#cc6600;}
#focus .preNext {width:45px; height:100px; position:absolute; top:90px; background:url(img/sprite.png) no-repeat 0 0; cursor:pointer;}
#focus .pre {left:0;}
#focus .next {right:0; background-position:right top;}
</style>