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

这是仿苏宁商城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. document.documentElement和document.body区别

    body是DOM对象里的body子节点,即body标签, documentElement 是整个节点树的根节点root, 详细介绍请看本文,感兴趣的朋友可以参考下   区别: body是DOM对象里的 ...

  2. C#实现测量程序运行时间及cpu使用时间

    private void ShowRunTime() { TimeSpan ts1 = Process.GetCurrentProcess().TotalProcessorTime; Stopwatc ...

  3. Android(工具・集成)

    ■ NDK Android从始(2009)至终是支持JNI的. 只不过一开始没有NDK.需要自己安装交叉编译器创建so,然后放到assert之类捆绑so发布. 有了NDK.有了什么? libc lib ...

  4. Fragment的生命周期&同一Activity下不同Fragment之间的通信

    Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方 ...

  5. xcode下载方式

    1.去AppStore下载 对于Xcode老是在AppStore升级失败,而且下载慢,可取找到了这个--> 官方 Xcode .dmg 文件下载链接:超级传送门 2.开发者中心官网下载 可参考这 ...

  6. debian系(Ubuntu)安装jenkins(持续集成)

    wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'ec ...

  7. 逆向并查集 hrbust 1913

    #include<iostream> //由于拆除并查集的方法太难或者没有#include<cstdio> //可以先将所有没有拆的桥连接 再逆向操作 断开变成连接 反向输出# ...

  8. hibernate像MySQL数据库里面存值是中文乱码的解决合辑

    解决办法一: 1.把数据库表每一行改成gb2312_chinese(使用PHPMyAdmin)   2.导入时候还是不行,因此查网上的资料说hibernate持久化层在传输过程中未设置编码格式,这样在 ...

  9. ajax初学

    //参数说明url:请求文件地址//fnSucc:请求成功执行的函数,请求成功的条件为readyState状态码为4:且status状态码为200,status状态为浏览器请求返回的状态码//在fnS ...

  10. mysql windows 下导入大文件

    先进入你的mysql bin目录 cd D:/php/mysql/bin 输入命令 mysql -u 用户名 -p 密码 数据库名 < 文件路径                          ...