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

这是仿苏宁商城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. css属性之vertical-align详解

    inline-block 该值会让元素生成一个内联级块容器(inline-level block container).一个inline-block的内部会被格式化成一个块盒,而该元素本身会被格式化成 ...

  2. Asp.Net--回调技术

    实现回调技术需要以下步骤: 1.实现ICallbakEventHandler 2.实现接口中的方法:RaiseCallbackEvent 3.实现GetCallbackResult 方法 解释 参数 ...

  3. Assimp场景模型输出Collada,STL,3DPDF

    本文介绍开源库模型的几种输出格式:DAE,STL,3DPDF. Assimp是C++写的,AssimpNet是C#重构其中主要数据结构,并开通Assimp中重要方法的调用接口,为不熟悉C++的码农带来 ...

  4. CREATE DATABASE

    CREATE DATABASE IF NOT EXISTS `focusdata` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE `fo ...

  5. 创建DataTable并把列默认值

    DataTable dt=new DataTable(); dt.Columns.Add("id"); dt.Columns["id"].DefaultValu ...

  6. Symfony2中的设计模式——装饰者模式

    装饰者模式的定义  文章链接:http://www.hcoding.com/?p=101 个人站点:http://www.hcoding.com/ 在不必改变原类文件和使用继承的情况下,动态地扩展一个 ...

  7. 算法导论之python实现插入排序

    插入排序的花费时间 c*n2, c 是常数 伪代码 INSERTION-SORT(A) for i  to A.length key = A[j] //Insert A[j] into the sor ...

  8. RichTextBox控件日常使用集合

    1.RichTextBox控件自动滚动到底部 richTextBox1.ScrollToCaret(); //将控件的内容滚动到当前光标位置

  9. m2eclipse插件安装

    一.给Eclipse安装maven的插件 m2eclipse 1 打开eclipse 2 Help -->Eclipse MarketPlace,在打开的界面搜索框中输入maven查找m2ecl ...

  10. JUnit使用Eclipse建立Test Suite - 就是爱Java

    当JUnit有多个或所有的Test Case要执行,此时就需要Test Suite来管理众多的Test Case,利用Eclipse的整合开发环境,可以针对多个不相关的Test Case或Test S ...