自从解决了定时器的问题后,什么都好弄了

这是仿苏宁商城banner的,当然我没弄得那么好啦,但是我想就是那个缩略图,我没弄好吧,方法我猜想是通过把所有li都放进数组,然后通过遍历,就可以做出相应的效果吧;

html

<div class="banner">
<div class="slider">
<a href="javascript:;" class="prev"><</a>
<a href="javascript:;" class="next">></a>
<ul>
<li style="background:#F6F6F6">
<a href="">
<img src="./首页-海汇网_files/banner.png" alt=""></a>
</li>
<li style="background:#2f2f2f">
<a href="">
<img src="./首页-海汇网_files/banner1.png" alt=""></a>
</li>
<li style="background:#222">
<a href="">
<img src="./首页-海汇网_files/banner2.png" alt=""></a>
</li>
</ul>
</div>
<div class="others">
<div class="pagination"></div>
</div>
</div>

<script type="text/javascript">
      $('.banner').fadeTab({
          'pageNum':true
      });
  </script>

css

.banner .slider{
width:100%;
position: relative;
height:450px;
overflow: hidden;
}
.banner .slider li{
display: block;
/* background:#999;*/
position: absolute;
z-index: 60;
top: 0;
left: 0;
opacity: 1;
width: 100%;
height: 450px;
}
.banner .slider li a{
position: absolute;
left: 50%;
width: 1000px;
background:#666;
height: 450px;
margin-left: -500px;
}
.banner .others{
width:1000px;
margin:0 auto;
height:30px;
z-index: 1000;
bottom:30px;
position: relative;
}
.banner .slider .prev{
width:50px;
height:50px;
display: none;
z-index: 1000;
position: absolute;
left:100px;
top:50%;
border-radius: 100%;
line-height: 50px;
margin-top:-20px;
background:#333;
opacity: 0.5;
color:#fff;
font-size: 20px;
}
.banner .slider .next{
width:50px;
z-index: 1000;
height:50px;
display: none;
position: absolute;
right:100px;
line-height: 50px;
border-radius: 100%;
top:50%;
margin-top:-20px;
background:#333;
opacity: 0.5;
color:#fff;
font-size: 20px;
}
.banner .others .pagination{
bottom: 0px;
height:30px;
z-index: 1001; text-align: center;
line-height: 30px;
font-size: 16px;
margin:0 auto;
}
.banner .others .pagination i{
display: inline-block;
width:10px;
height:10px;
cursor: pointer;
background:#fff;
margin:5px;
border-radius: 50%;
opacity: 0.8;
font-size: 0;
}
.banner .others .pagination i.on{
opacity: 1;
width:20px;
vertical-align: top;
margin-top:0px;
height:20px;
font-style: normal;
font-size: 12px;
text-decoration: none;
text-align: center;
line-height: 20px;
background:#fff;
}
.banner .others .pagination i.active{
opacity: 1;
width:10px; margin-top:0px;
height:10px; background:#fff;
}

jquery

 /**
*
* @authors Your Name (you@example.org)
* @date 2015-09-13 01:54:25
* @version $Id$
*/
(function($) {
$.fn.fadeTab = function(options) {
var settings = $.extend({
"autoPlay": true,
'time': 3000,
'fadeInSpeed':800,
'fadeOutSpeed':400,
'pageNum':false,
'pageClassOn':'on',
'pageClassActive':'active'
}, options); return this.each(function() {
var n = 0;
var t;
var pageIndex;
var b = true;
var $this = $(this);
var $slider = $this.find('.slider');
var $others = $this.find('.others');
var pageLow = $others.find('.pagination');
var prevBtn = $slider.find('.prev');
var nextBtn = $slider.find('.next');
var sliderLi = $slider.find('li');
var count = sliderLi.length;
var time = 3000;
var pageClass; //初始化
var intFade = function() {
for (j = 0; j < sliderLi.length; j++) {
var pi = '<i></i>';
pageLow.append(pi);
};
pageIndex = $others.children('.pagination').find('i');
if(settings.pageNum == true){
pageClass = settings.pageClassOn;
pageIndex.eq(0).addClass(pageClass).text(1);
}else{
pageClass = settings.pageClassActive;
pageIndex.eq(0).addClass(pageClass);
}
sliderLi.not(':first-child').hide();
}
intFade(); //回调,防止重复点击造成的轮播延迟的情况
var callBack = function() {
b = true;
} //分页
var pageTab = function(i, fn) {
sliderLi.eq(i).stop(false, true).fadeIn(800).siblings().fadeOut(400);
pageIndex.eq(i).addClass(pageClass).siblings().removeClass(pageClass);
if(settings.pageNum == true){
pageIndex.eq(i).text(i + 1);
}
//使用回调的方法,让每次动画执行完毕后,再让b = true;
if (fn) {
setTimeout(fn, 800)
}
}; //上一张
var fadePrev = function() {
if (!b) {
return;
}
b = false;
if (n <= 0) {
n = count - 1;
} else {
n--;
}
pageTab(n, callBack);
}; //下一张
var fadeNext = function() {
if (!b) {
return;
};
b = false;
if (n >= sliderLi.length - 1) {
n = 0;
} else {
n++;
}
pageTab(n, callBack);
}; //圆点点击
pageIndex.click(function() {
if (!b) {
return;
}
b = false;;
var i = $(this).index(); //获取Li元素内的值,即012
n = i;
pageTab(n, callBack);
}); prevBtn.on('click', fadePrev);
nextBtn.on('click', fadeNext); //鼠标悬停停止
$this.hover(function() {
if (t) {
clearInterval(t)
};
prevBtn.show();
nextBtn.show();
}, function() {
prevBtn.hide();
nextBtn.hide();
if(settings.autoPlay){
t = setInterval(showAuto, settings.time);
}
}); //自动播放
function showAuto() {
if (n >= sliderLi.length - 1) {
n = 0;
} else {
n++;
}
pageTab(n, callBack); };
if(settings.autoPlay){
t = setInterval(showAuto, settings.time);
}
})
}
})(jQuery)

  

jquery商城类封装插件的更多相关文章

  1. 把jQuery的类、插件封装成seajs的模块的方法

    这篇文章主要介绍了把jQuery的类.插件封装成seajs的模块的方法,需要的朋友可以参考下 注:本文使用的seajs版本是2.1.1 一.把Jquery封装成seajs的模块 define(func ...

  2. jquery 自定义类

    jQuery自定义类封装: (function ($) { $.DragField = function (arg) { var name = "你好"; //这个是私有变量,外部 ...

  3. jquery 封装插件

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  4. jQuery框架-3.jQuery自定义封装插件和第三方插件

    一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge th ...

  5. ***使用jQuery去封装插件(组件化、模块化的思想),即扩展方法

    如何使用jQuery去封装插件,区分扩展全局方法与扩展一个普通的jQuery实例对象的方法 1.给全局对象扩展方法:①$.方法 = function(参数可加可不加){}  ②使用:$.方法(有参数的 ...

  6. 读<jQuery 权威指南>[5]-插件

    一.说明 jQuery插件官网:http://plugins.jquery.com/ 使用插件时引用顺序:插件引用要位于主jquery库之后. 二.插件应用实例 演示插件jquery.validate ...

  7. jQuery 小知识点(插件)

    1.jQuery插件小知识点: 估计很多人都没弄明白下面的东西,特从网络上搜索了下面的知识,自己以后用起来也比较方便: $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例 ...

  8. WeMall微信商城源码插件大转盘代码详情

    WeMall微信商城源码插件大转盘代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 代码详情地址:http://addon.wemallshop.com/Product/ ...

  9. 《锋利的jQuery》笔记:插件的使用和写法

    jQuery插件的种类 1.封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件.此类插件可以发挥出jQuery选择器的强大优势,有相当一部分 ...

随机推荐

  1. C#程序调用cmd执行命令(转)

    C#通过程序来调用cmd命令的操作 string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Diagnos ...

  2. (转)HiddenField控件的使用

    ASP.NET2.0 HiddenField控件(1)2007-05-12 23:18HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不 ...

  3. Intent 能传递的数据类型

    1. Serializable,将对象序列化成二进制数据传递 2. charsequence: 主要用来传递String,char等 3. parcelable: 这个android提供的一种新的类型 ...

  4. div有最小高度且自适应高度

    DIV最小高度且自适应高度   在IE6中,如果子容器的高度超过父容器的时候,父容器会被子容器撑开,所以我们可以直接设置一个height的高度值即可.但是在IE7和firefox就不行了,它不会自动撑 ...

  5. C/C++中的浮点数运算

    代码: #include <iostream> #include <cstdio> #include <cfloat> using namespace std; i ...

  6. R0:前瞻

    原文链接http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.html Libevent使用手册:前瞻 总览: Libevent是一个用来写高性能 ...

  7. traceroute小结 come from CSDN author:houdong

    traceroute程序可以使我们看到IP数据报从一台主机传到另一台主机的所经过的路由,并且可以使用IP源站路由选项. traceroute取代IP RR的原因 1 不是所有的路由器都支持IP RR选 ...

  8. django TypeError: 'module' object is not callable

    原因:导入模块时直接把模块当函数使用 from rest_framework import reverse #import reverse module @api_view(("GET&qu ...

  9. Spring MVC异常处理

    Spring Mvc 中异常处理,一般有两种解决办法: 一.利用org.springframework.web.servlet.handler.SimpleMappingExceptionResolv ...

  10. php 之 分页查询的使用方法及其类的封装

    一.分页的使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...