jquery商城类封装插件
自从解决了定时器的问题后,什么都好弄了
这是仿苏宁商城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商城类封装插件的更多相关文章
- 把jQuery的类、插件封装成seajs的模块的方法
这篇文章主要介绍了把jQuery的类.插件封装成seajs的模块的方法,需要的朋友可以参考下 注:本文使用的seajs版本是2.1.1 一.把Jquery封装成seajs的模块 define(func ...
- jquery 自定义类
jQuery自定义类封装: (function ($) { $.DragField = function (arg) { var name = "你好"; //这个是私有变量,外部 ...
- jquery 封装插件
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- jQuery框架-3.jQuery自定义封装插件和第三方插件
一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend Merge th ...
- ***使用jQuery去封装插件(组件化、模块化的思想),即扩展方法
如何使用jQuery去封装插件,区分扩展全局方法与扩展一个普通的jQuery实例对象的方法 1.给全局对象扩展方法:①$.方法 = function(参数可加可不加){} ②使用:$.方法(有参数的 ...
- 读<jQuery 权威指南>[5]-插件
一.说明 jQuery插件官网:http://plugins.jquery.com/ 使用插件时引用顺序:插件引用要位于主jquery库之后. 二.插件应用实例 演示插件jquery.validate ...
- jQuery 小知识点(插件)
1.jQuery插件小知识点: 估计很多人都没弄明白下面的东西,特从网络上搜索了下面的知识,自己以后用起来也比较方便: $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例 ...
- WeMall微信商城源码插件大转盘代码详情
WeMall微信商城源码插件大转盘代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 代码详情地址:http://addon.wemallshop.com/Product/ ...
- 《锋利的jQuery》笔记:插件的使用和写法
jQuery插件的种类 1.封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件.此类插件可以发挥出jQuery选择器的强大优势,有相当一部分 ...
随机推荐
- Sass函数--字符串函数
Sass的函数简介在 Sass 中除了可以定义变量,具有 @extend.%placeholder 和 mixins 等特性之外,还自备了一系列的函数功能.其主要包括: ● 字符串函数 ● 数字函数 ...
- js_day2
1)<script src="dsad.js"> 不是 scr= 2)
- OSG调试信息显示
调试信息显示 OSG 可以将各式各样的调试信息输出到std:cout.这在开发OSG 程序时十分有用,你可以借此观察OSG 的执行的各种操作.环境变量OSG_NOTIFY_LEVEL用于控制OSG调试 ...
- 关于curl_setopt参数的记录
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE) 其中true输出执行结果,false为不输出 fsockopen与curl_setopt请求的区别之一就是 ...
- PYTHON简介及安装
Python简介 Python是一种广泛使用的高层次,通用,解释,动态编程语言.它的设计理念强调代码的可读性,它的语法允许程序员表达更少的代码的概念比将在可能语言如C ++或Java.该语言提供旨在使 ...
- nsfocus-笔试题
1.描述sendmail原理及通讯机制 sendmail程序接受到待发邮件后,通过关键字@判断邮件的格式是否符合要求,匹配成功后提取邮件后缀域名信息并查询DNS数据库相关MX(邮件专用)记录,若有匹配 ...
- Windows server 2012 各版本 激活方法
Windows server 2012 激活教程 本文包括以下两种版本的激活过程:(注意RC版的是不能激活的!) 1.Windows server 2012 试用版本激活 2.Windows serv ...
- python 3.5 猜数字游戏
#!/usr/bin/env python #encoding: utf-8 number = 88 for i in range(1,6): num = int(input('gusee numbe ...
- 关于mobiscroll插件的使用
在网上找了很多资料,各大猿友对这个插件都做了很详细的介绍,我也是看了很多资料才发现原来这个插件有一些需要注意的地方,在这总结了一下: //时间 var currYear = (new Date()). ...
- Swift 可选类型-备
我们先看看如下代码: var n1: Int = 10 n1 = nil //编译错误 let str: String = nil //编译错误 Int和String类型不能接受 ...