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

这是仿苏宁商城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. 使用OpenXml实现生成数据字典文档(beta)

    最近项目在走验收流程,之前没有仔细看SOW文档,发现需要补好多份文档,其中就有数据字典,项目组不愿意花时间太多的时间弄这些文档,也不希望以后还要重复劳动力,最终决定做一个工具,方便自己生成数据字典文档 ...

  2. Asp.Net WebAPI 通过HttpContextBase获取请求参数

    WEBAPI中的Request是HttpRequestMessage类型,不能像Web传统那样有querystring和from 方法接收参数,而传统的HttpReqest的基类是HttpReqest ...

  3. ADO.NET之使用DataGridView控件显示从服务器上获取的数据

    今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...

  4. Google推出iOS功能性UI测试框架EarlGrey

    经过了一段时间的酝酿后,Google很高兴地宣布了EarlGrey,一款针对于iOS的功能性UI测试框架.诸如YouTube.Google Calendar.Google Photos.Google ...

  5. C#time 闹钟

    private void timer2_Tick(object sender, EventArgs e) { lbltime.Text = DateTime.Now.ToString(); & ...

  6. mysql数据库在Navicat Premium连接的时候出现1862错误

    navicat连接打开时报1862的错误, 很就没有连接mysql看看了,今天连接的时候发现本机的mysql链接不上了,在cmd中执行动作的时候也会叫你去set password,做设置密码的动作时会 ...

  7. DIV 遮挡问题总结

    1.DIV被Silverlight遮挡, 加入windowless参数即可. <object id=”silverlight” data=”data:application/x-silverli ...

  8. 容器 MAP

    1.equal_range pair <myMapDef::iterator,myMapDef::iterator> myresult; myPairDef ps=*MyMap1.begi ...

  9. DataTables DOM定位

    datatables默认会打开部分特性,比如搜索框,分页显示等等,或许你不喜欢datatables这样去布局,可能你想把分页按钮放在底部的中间,搜索框放在顶部的左上角,不用担心datatables考虑 ...

  10. android:layout_weight属性的简单使用

    效果: style.xml <style name="etStyle2"> <item name="android:layout_width" ...