90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
|
|
;(function($) {
|
|
$.fn.nc_slider = function(options) {
|
|
var defaults = {
|
|
animate: 400,
|
|
timeout: 5000,
|
|
pagination: true,
|
|
pagination_class: 'full-screen-slides-pagination'
|
|
};
|
|
var settings = $.extend({}, defaults, options);
|
|
|
|
function nc_slider($slider) {
|
|
var slider = {
|
|
timer: null,
|
|
$items: null,
|
|
items_count: null,
|
|
max_index: null,
|
|
$pagination: null,
|
|
auto: true,
|
|
current: 0
|
|
};
|
|
|
|
function init() {
|
|
slider.$items = $slider.children();
|
|
slider.items_count = slider.$items.length;
|
|
if(slider.items_count <= 1) {
|
|
return;
|
|
}
|
|
slider.max_index = slider.items_count - 1;
|
|
slider.$items.hide();
|
|
|
|
//初始化导航
|
|
if(settings.pagination) {
|
|
//生成导航按钮
|
|
var pagination_html = '<ul class="' + settings.pagination_class + '">';
|
|
for (var i = 1; i <= slider.items_count; i++) {
|
|
pagination_html += '<li>' + '<a href="javascript:;">' + i + '</a>' + '</li>';
|
|
}
|
|
pagination_html += '</ul>';
|
|
$slider.after(pagination_html);
|
|
|
|
slider.$pagination = $slider.next('ul').find('li');
|
|
|
|
//导航按钮单击切换
|
|
slider.$pagination.on('click', function() {
|
|
var next = $(this).index();
|
|
go(next);
|
|
});
|
|
|
|
//鼠标移动到导航按钮上暂停自动播放
|
|
slider.$pagination.mouseenter(function() {
|
|
slider.auto = false;
|
|
});
|
|
slider.$pagination.mouseleave(function() {
|
|
slider.auto = true;
|
|
});
|
|
}
|
|
|
|
next();
|
|
}
|
|
|
|
function go(next) {
|
|
slider.$items.eq(slider.current).fadeOut(settings.animate);
|
|
slider.$items.eq(next).fadeIn(settings.animate);
|
|
slider.current = next;
|
|
|
|
if(settings.pagination) {
|
|
slider.$pagination.eq(next).addClass('current').siblings('li').removeClass('current');
|
|
}
|
|
}
|
|
|
|
function next() {
|
|
if (slider.auto) {
|
|
if (slider.current >= slider.max_index || slider.timer === null) {
|
|
go(0);
|
|
} else {
|
|
go(slider.current + 1);
|
|
}
|
|
}
|
|
slider.timer = setTimeout(next, settings.timeout);
|
|
}
|
|
|
|
init();
|
|
}
|
|
|
|
return this.each(function() {
|
|
nc_slider($(this));
|
|
});
|
|
};
|
|
})(jQuery); |