JS插件开发之-简易轮播图
HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="css/index.css">
<script src="js/jquery-1.11.3.js"></script>
<script src="js/tab.js"></script>
</head>
<body>
<div class="tab js-tab">
<div class="content-wrap">
<div class="content-item current">
<img src="images/class_img1.png" alt="">
</div>
<div class="content-item">
<img src="images/class_img2.png" alt="">
</div>
<div class="content-item">
<img src="images/class_img3.png" alt="">
</div>
<div class="content-item">
<img src="images/class_img4.png" alt="">
</div>
</div>
<ul class="tab-nav clearfix">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
var tab1 = new Tab($(".js-tab"));
</script>
</body>
</html>
css代码
body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div{margin:0;padding:0;border:0;}
body{background: #323232;font-size: 12px;font-family: "微软雅黑";padding: 100px}
ul,ol{list-style-type:none;}
i{font-style: normal;}
a{text-decoration:none;cursor: pointer;}
.clearfix:after{display: block;clear: both;content: "";visibility: hidden;height: 0;}
.clearfix{zoom:1;}
.fl{float: left;}
.fr{float: right;}
.tab{width: 228px;height: 160px;position: relative;}
.tab .tab-nav{position: absolute;bottom: 5px;left: 0;right: 0;margin: auto;width: 64px}
.tab .tab-nav li{float: left;margin:0 3px;background: #767676;border-radius: 50%;width: 10px;height: 10px;}
.tab .tab-nav li.active{background: white}
.tab .content-wrap{height: 160px}
.tab .content-wrap .content-item{display: none;position: absolute;height: 160px}
.tab .content-wrap .current{display: block}
js代码
!(function (win, $) {
var Tab = function(tab){
var self = this;
this.tab = tab;
this.config = {
"triggerType": "click",
"effect": "fade",
"invoke": 1,
"auto": 2000
};
this.tabItems = $("ul.tab-nav li");
this.contentItems = $(".content-item");
var config = this.config;
if (config.triggerType === "click"){
this.tabItems.on(config.triggerType,function(){
self.invoke($(this));
})
} else if (config.triggerType === "mouseover"){
this.tabItems.on(config.triggerType, function () {
self.invoke($(this));
})
}
if(config.auto){
this.timer = null;
this.loop = 0;
this.autoPlay();
this.tab.hover(function(){
win.clearInterval(self.timer);
},function(){
self.autoPlay();
})
};
if(config.invoke > 1){
this.invoke(this.tabItems.eq(config.invoke-1));
}
};
Tab.prototype = {
invoke:function(currentTab){
var index = currentTab.index();
currentTab.addClass("active").siblings().removeClass("active");
var effect = this.config.effect;
var conItems = this.contentItems;
if(effect === "default"){
conItems.eq(index).addClass("current").siblings().removeClass("current");
} else if (effect === "fade"){
conItems.eq(index).fadeIn().siblings().fadeOut();
}
if(this.config.auto){
this.loop = index;
}
},
autoPlay:function(){
var self = this;
var tabItems = this.tabItems;
var tabLength = tabItems.length;
var config = this.config;
this.timer = win.setInterval(function(){
self.loop++;
if (self.loop >= tabLength){
self.loop = 0;
};
tabItems.eq(self.loop).trigger(config.triggerType);
},config.auto);
}
}
win.Tab = Tab;
})(window, jQuery);
最后上效果图