(function ($) {
$.fn.extend({
/*
* @description slider
*
*/
slider: function (opt) {
var that = this,
opt = opt || {},
type = opt.type || \'fade\', //动画类型
time = opt.time || 6000,//间隔时间
$list = $(that).find(\'.i\'), //元素的dom
$index = $(that).find(\'.index ul\'),//索引的dom
length = $list.length, //元素的长度
currIndex = 0, //
slideFunc = getSlideFunc(type),
runner = slideFunc ? setInterval(slideFunc, time) : function () {
return false;
};
appendIndex(length);
//鼠标悬停事件
$(that).hover(function () {
clearInterval(runner);
}, function () {
runner = setInterval(slideFunc, time);
});
function getSlideFunc(type) {
var slideFunc;
switch (type) {
case \'fade\':
slideFunc = function () {
$list.eq(currIndex).fadeIn(\'normal\').css(\'display\', \'block\');
$index.find(\'.on\').removeClass(\'on\').addClass(\'off\');
for(var i = 0; i < length; i++) {
if (i !== currIndex) {
$list.eq(i).css(\'display\', \'none\');
}else{
$index.find(\'li\').eq(i).removeClass(\'off\').addClass(\'on\');
}
}
currIndex = (++currIndex) % length;
};
break;
}
return slideFunc;
}
//添加索引
function appendIndex(length) {
var htmlStr = \'<li class="on"></li>\';
for(var i = 0; i < length-1; i++) {
htmlStr += \'<li class="off"></li>\';
}
$index.html(htmlStr);
}
}
});
})(jQuery);
(function($){
$.fn.ckSlide = function(opts){
opts = $.extend({}, $.fn.ckSlide.opts, opts);
this.each(function(){
var slidewrap = $(this).find(\'.ck-slide-wrapper\');
var slide = slidewrap.find(\'li\');
var count = slide.length;
var that = this;
var index = 0;
var time = null;
$(this).data(\'opts\', opts);
// next
$(this).find(\'.ck-next\').on(\'click\', function(){
if(opts[\'isAnimate\'] == true){
return;
}
var old = index;
if(index >= count - 1){
index = 0;
}else{
index++;
}
change.call(that, index, old);
});
// prev
$(this).find(\'.ck-prev\').on(\'click\', function(){
if(opts[\'isAnimate\'] == true){
return;
}
var old = index;
if(index <= 0){
index = count - 1;
}else{
index--;
}
change.call(that, index, old);
});
$(this).find(\'.ck-slidebox li\').each(function(cindex){
$(this).on(\'click.slidebox\', function(){
change.call(that, cindex, index);
index = cindex;
});
});
// focus clean auto play
$(this).on(\'mouseover\', function(){
if(opts.autoPlay){
clearInterval(time);
}
$(this).find(\'.ctrl-slide\').css({opacity:0.6});
});
// leave
$(this).on(\'mouseleave\', function(){
if(opts.autoPlay){
startAtuoPlay();
}
$(this).find(\'.ctrl-slide\').css({opacity:0.15});
});
startAtuoPlay();
// auto play
function startAtuoPlay(){
if(opts.autoPlay){
time = setInterval(function(){
var old = index;
if(index >= count - 1){
index = 0;
}else{
index++;
}
change.call(that, index, old);
}, 2000);
}
}
// 修正box
var box = $(this).find(\'.ck-slidebox\');
box.css({
\'margin-left\':-(box.width() / 2)
})
// dir
switch(opts.dir){
case "x":
opts[\'width\'] = $(this).width();
slidewrap.css({
\'width\':count * opts[\'width\']
});
slide.css({
\'float\':\'left\',
\'position\':\'relative\'
});
slidewrap.wrap(\'<div class="ck-slide-dir"></div>\');
slide.show();
break;
}
});
};
function change(show, hide){
var opts = $(this).data(\'opts\');
if(opts.dir == \'x\'){
var x = show * opts[\'width\'];
$(this).find(\'.ck-slide-wrapper\').stop().animate({\'margin-left\':-x}, function(){opts[\'isAnimate\'] = false;});
opts[\'isAnimate\'] = true
}else{
$(this).find(\'.ck-slide-wrapper li\').eq(hide).stop().animate({opacity:0});
$(this).find(\'.ck-slide-wrapper li\').eq(show).show().css({opacity:0}).stop().animate({opacity:1});
}
$(this).find(\'.ck-slidebox li\').removeClass(\'current\');
$(this).find(\'.ck-slidebox li\').eq(show).addClass(\'current\');
}
$.fn.ckSlide.opts = {
autoPlay: false,
dir: null,
isAnimate: false
};
})(jQuery);