以下是 jquery不规则随机切换焦点图轮播滚动切换特效代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery不规则随机切换焦点图</title>
</head>
<body>
<link rel="stylesheet" href="css/orman.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/nivo-slider.css" type="text/css" media="screen" />
<div class="slider-wrapper theme-orman">
<div class="ribbon"></div>
<div id="slider" class="nivoSlider">
<img src="img/01.jpg" alt="Homepage Slider" title="the best" />
<img src="img/02.jpg" alt="Web Design" title="Wedding" />
<img src="img/03.jpg" alt="New Template" title="长城婚礼" />
<img src="img/04.jpg" alt="Business Website" title="好朋友一起" />
</div>
<div class="nivo-controlNav-bg"></div>
</div>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="js/jquery.nivo.slider.pack.js"></script>
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider({
controlNav:true
});
});
</script>
</body>
</html>
JS代码(jquery.nivo.slider.pack.js):
/* * jQuery Nivo Slider v2.6 * http://nivo.dev7studios.com * * Copyright 2011,Gilbert Pellegrom * Free to use and abuse under the MIT license. * http://www.opensource.org/licenses/mit-license.php * * March 2010 */
(function($){
var NivoSlider=function(element,options){
var settings=$.extend({
}
,$.fn.nivoSlider.defaults,options);
var vars={
currentSlide:0,currentImage:'',totalSlides:0,randAnim:'',running:false,paused:false,stop:false}
;
var slider=$(element);
slider.data('nivo:vars',vars);
slider.css('position','relative');
slider.addClass('nivoSlider');
var kids=slider.children();
kids.each(function(){
var child=$(this);
var link='';
if(!child.is('img')){
if(child.is('a')){
child.addClass('nivo-imageLink');
link=child;
}
child=child.find('img:first');
}
var childWidth=child.width();
if(childWidth==0)childWidth=child.attr('width');
var childHeight=child.height();
if(childHeight==0)childHeight=child.attr('height');
if(childWidth>slider.width()){
slider.width(childWidth);
}
if(childHeight>slider.height()){
slider.height(childHeight);
}
if(link!=''){
link.css('display','none');
}
child.css('display','none');
vars.totalSlides++;
}
);
if(settings.startSlide>0){
if(settings.startSlide>=vars.totalSlides)settings.startSlide=vars.totalSlides-1;
vars.currentSlide=settings.startSlide;
}
if($(kids[vars.currentSlide]).is('img')){
vars.currentImage=$(kids[vars.currentSlide]);
}
else{
vars.currentImage=$(kids[vars.currentSlide]).find('img:first');
}
if($(kids[vars.currentSlide]).is('a')){
$(kids[vars.currentSlide]).css('display','block');
}
slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
slider.append($('<div class="nivo-caption"><p></p></div>').css({
display:'none',opacity:settings.captionOpacity}
));
var processCaption=function(settings){
var nivoCaption=$('.nivo-caption',slider);
if(vars.currentImage.attr('title')!=''&&vars.currentImage.attr('title')!=undefined){
var title=vars.currentImage.attr('title');
if(title.substr(0,1)=='#')title=$(title).html();
if(nivoCaption.css('display')=='block'){
nivoCaption.find('p').fadeOut(settings.animSpeed,function(){
$(this).html(title);
$(this).fadeIn(settings.animSpeed);
}
);
}
else{
nivoCaption.find('p').html(title);
}
nivoCaption.fadeIn(settings.animSpeed);
}
else{
nivoCaption.fadeOut(settings.animSpeed);
}
}
processCaption(settings);
var timer=0;
if(!settings.manualAdvance&&kids.length>1){
timer=setInterval(function(){
nivoRun(slider,kids,settings,false);
}
,settings.pauseTime);
}
if(settings.directionNav){
slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+settings.prevText+'</a><a class="nivo-nextNav">'+settings.nextText+'</a></div>');
if(settings.directionNavHide){
$('.nivo-directionNav',slider).hide();
slider.hover(function(){
$('.nivo-directionNav',slider).show();
}
,function(){
$('.nivo-directionNav',slider).hide();
}
);
}
$('a.nivo-prevNav',slider).live('click',function(){
if(vars.running)return false;
clearInterval(timer);
timer='';
vars.currentSlide-=2;
nivoRun(slider,kids,settings,'prev');
}
);
$('a.nivo-nextNav',slider).live('click',function(){
if(vars.running)return false;
clearInterval(timer);
timer='';
nivoRun(slider,kids,settings,'next');
}
);
}
if(settings.controlNav){
var nivoControl=$('<div class="nivo-controlNav"></div>');
slider.append(nivoControl);
for(var i=0;
i<kids.length;
i++){
if(settings.controlNavThumbs){
var child=kids.eq(i);
if(!child.is('img')){
child=child.find('img:first');
}
if(settings.controlNavThumbsFromRel){
nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('rel')+'" alt="" /></a>');
}
else{
nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('src').replace(settings.controlNavThumbsSearch,settings.controlNavThumbsReplace)+'" alt="" /></a>');
}
}
else{
nivoControl.append('<a class="nivo-control" rel="'+i+'">'+(i+1)+'</a>');
}
}
$('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');
$('.nivo-controlNav a',slider).live('click',function(){
if(vars.running)return false;
if($(this).hasClass('active'))return false;
clearInterval(timer);
timer='';
slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
vars.currentSlide=$(this).attr('rel')-1;
nivoRun(slider,kids,settings,'control');
}
);
}
if(settings.keyboardNav){
$(window).keypress(function(event){
if(event.keyCode=='37'){
if(vars.running)return false;
clearInterval(timer);
timer='';
vars.currentSlide-=2;
nivoRun(slider,kids,settings,'prev');
}
if(event.keyCode=='39'){
if(vars.running)return false;
clearInterval(timer);
timer='';
nivoRun(slider,kids,settings,'next');
}
}
);
}
if(settings.pauseOnHover){
slider.hover(function(){
vars.paused=true;
clearInterval(timer);
timer='';
}
,function(){
vars.paused=false;
if(timer==''&&!settings.manualAdvance){
timer=setInterval(function(){
nivoRun(slider,kids,settings,false);
}
,settings.pauseTime);
}
}
);
}
slider.bind('nivo:animFinished',function(){
vars.running=false;
$(kids).each(function(){
if($(this).is('a')){
$(this).css('display','none');
}
}
);
if($(kids[vars.currentSlide]).is('a')){
$(kids[vars.currentSlide]).css('display','block');
}
if(timer==''&&!vars.paused&&!settings.manualAdvance){
timer=setInterval(function(){
nivoRun(slider,kids,settings,false);
}
,settings.pauseTime);
}
settings.afterChange.call(this);
}
);
var createSlices=function(slider,settings,vars){
for(var i=0;
i<settings.slices;
i++){
var sliceWidth=Math.round(slider.width()/settings.slices);
if(i==settings.slices-1){
slider.append($('<div class="nivo-slice"></div>').css({
left:(sliceWidth*i)+'px',width:(slider.width()-(sliceWidth*i))+'px',height:'0px',opacity:'0',background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((sliceWidth+(i*sliceWidth))-sliceWidth)+'px 0%'}
));
}
else{
slider.append($('<div class="nivo-slice"></div>').css({
left:(sliceWidth*i)+'px',width:sliceWidth+'px',height:'0px',opacity:'0',background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((sliceWidth+(i*sliceWidth))-sliceWidth)+'px 0%'}
));
}
}
}
var createBoxes=function(slider,settings,vars){
var boxWidth=Math.round(slider.width()/settings.boxCols);
var boxHeight=Math.round(slider.height()/settings.boxRows);
for(var rows=0;
rows<settings.boxRows;
rows++){
for(var cols=0;
cols<settings.boxCols;
cols++){
if(cols==settings.boxCols-1){
slider.append($('<div class="nivo-box"></div>').css({
opacity:0,left:(boxWidth*cols)+'px',top:(boxHeight*rows)+'px',width:(slider.width()-(boxWidth*cols))+'px',height:boxHeight+'px',background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((boxWidth+(cols*boxWidth))-boxWidth)+'px -'+((boxHeight+(rows*boxHeight))-boxHeight)+'px'}
));
}
else{
slider.append($('<div class="nivo-box"></div>').css({
opacity:0,left:(boxWidth*cols)+'px',top:(boxHeight*rows)+'px',width:boxWidth+'px',height:boxHeight+'px',background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((boxWidth+(cols*boxWidth))-boxWidth)+'px -'+((boxHeight+(rows*boxHeight))-boxHeight)+'px'}
));
}
}
}
}
var nivoRun=function(slider,kids,settings,nudge){
var vars=slider.data('nivo:vars');
if(vars&&(vars.currentSlide==vars.totalSlides-1)){
settings.lastSlide.call(this);
}
if((!vars||vars.stop)&&!nudge)return false;
settings.beforeChange.call(this);
if(!nudge){
slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
}
else{
if(nudge=='prev'){
slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
}
if(nudge=='next'){
slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
}
}
vars.currentSlide++;
if(vars.currentSlide==vars.totalSlides){
vars.currentSlide=0;
settings.slideshowEnd.call(this);
}
if(vars.currentSlide<0)vars.currentSlide=(vars.totalSlides-1);
if($(kids[vars.currentSlide]).is('img')){
vars.currentImage=$(kids[vars.currentSlide]);
}
else{
vars.currentImage=$(kids[vars.currentSlide]).find('img:first');
}
if(settings.controlNav){
$('.nivo-controlNav a',slider).removeClass('active');
$('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');
}
processCaption(settings);
$('.nivo-slice',slider).remove();
$('.nivo-box',slider).remove();
if(settings.effect=='random'){
var anims=new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
vars.randAnim=anims[Math.floor(Math.random()*(anims.length+1))];
if(vars.randAnim==undefined)vars.randAnim='fade';
}
if(settings.effect.indexOf(',')!=-1){
var anims=settings.effect.split(',');
vars.randAnim=anims[Math.floor(Math.random()*(anims.length))];
if(vars.randAnim==undefined)vars.randAnim='fade';
}
vars.running=true;
if(settings.effect=='sliceDown'||settings.effect=='sliceDownRight'||vars.randAnim=='sliceDownRight'||settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft'){
createSlices(slider,settings,vars);
var timeBuff=0;
var i=0;
var slices=$('.nivo-slice',slider);
if(settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft')slices=$('.nivo-slice',slider)._reverse();
slices.each(function(){
var slice=$(this);
slice.css({
'top':'0px'}
);
if(i==settings.slices-1){
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+timeBuff));
}
else{
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed);
}
,(100+timeBuff));
}
timeBuff+=50;
i++;
}
);
}
else if(settings.effect=='sliceUp'||settings.effect=='sliceUpRight'||vars.randAnim=='sliceUpRight'||settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft'){
createSlices(slider,settings,vars);
var timeBuff=0;
var i=0;
var slices=$('.nivo-slice',slider);
if(settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft')slices=$('.nivo-slice',slider)._reverse();
slices.each(function(){
var slice=$(this);
slice.css({
'bottom':'0px'}
);
if(i==settings.slices-1){
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+timeBuff));
}
else{
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed);
}
,(100+timeBuff));
}
timeBuff+=50;
i++;
}
);
}
else if(settings.effect=='sliceUpDown'||settings.effect=='sliceUpDownRight'||vars.randAnim=='sliceUpDown'||settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft'){
createSlices(slider,settings,vars);
var timeBuff=0;
var i=0;
var v=0;
var slices=$('.nivo-slice',slider);
if(settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft')slices=$('.nivo-slice',slider)._reverse();
slices.each(function(){
var slice=$(this);
if(i==0){
slice.css('top','0px');
i++;
}
else{
slice.css('bottom','0px');
i=0;
}
if(v==settings.slices-1){
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+timeBuff));
}
else{
setTimeout(function(){
slice.animate({
height:'100%',opacity:'1.0'}
,settings.animSpeed);
}
,(100+timeBuff));
}
timeBuff+=50;
v++;
}
);
}
else if(settings.effect=='fold'||vars.randAnim=='fold'){
createSlices(slider,settings,vars);
var timeBuff=0;
var i=0;
$('.nivo-slice',slider).each(function(){
var slice=$(this);
var origWidth=slice.width();
slice.css({
top:'0px',height:'100%',width:'0px'}
);
if(i==settings.slices-1){
setTimeout(function(){
slice.animate({
width:origWidth,opacity:'1.0'}
,settings.animSpeed,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+timeBuff));
}
else{
setTimeout(function(){
slice.animate({
width:origWidth,opacity:'1.0'}
,settings.animSpeed);
}
,(100+timeBuff));
}
timeBuff+=50;
i++;
}
);
}
else if(settings.effect=='fade'||vars.randAnim=='fade'){
createSlices(slider,settings,vars);
var firstSlice=$('.nivo-slice:first',slider);
firstSlice.css({
'height':'100%','width':slider.width()+'px'}
);
firstSlice.animate({
opacity:'1.0'}
,(settings.animSpeed*2),'',function(){
slider.trigger('nivo:animFinished');
}
);
}
else if(settings.effect=='slideInRight'||vars.randAnim=='slideInRight'){
createSlices(slider,settings,vars);
var firstSlice=$('.nivo-slice:first',slider);
firstSlice.css({
'height':'100%','width':'0px','opacity':'1'}
);
firstSlice.animate({
width:slider.width()+'px'}
,(settings.animSpeed*2),'',function(){
slider.trigger('nivo:animFinished');
}
);
}
else if(settings.effect=='slideInLeft'||vars.randAnim=='slideInLeft'){
createSlices(slider,settings,vars);
var firstSlice=$('.nivo-slice:first',slider);
firstSlice.css({
'height':'100%','width':'0px','opacity':'1','left':'','right':'0px'}
);
firstSlice.animate({
width:slider.width()+'px'}
,(settings.animSpeed*2),'',function(){
firstSlice.css({
'left':'0px','right':''}
);
slider.trigger('nivo:animFinished');
}
);
}
else if(settings.effect=='boxRandom'||vars.randAnim=='boxRandom'){
createBoxes(slider,settings,vars);
var totalBoxes=settings.boxCols*settings.boxRows;
var i=0;
var timeBuff=0;
var boxes=shuffle($('.nivo-box',slider));
boxes.each(function(){
var box=$(this);
if(i==totalBoxes-1){
setTimeout(function(){
box.animate({
opacity:'1'}
,settings.animSpeed,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+timeBuff));
}
else{
setTimeout(function(){
box.animate({
opacity:'1'}
,settings.animSpeed);
}
,(100+timeBuff));
}
timeBuff+=20;
i++;
}
);
}
else if(settings.effect=='boxRain'||vars.randAnim=='boxRain'||settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
createBoxes(slider,settings,vars);
var totalBoxes=settings.boxCols*settings.boxRows;
var i=0;
var timeBuff=0;
var rowIndex=0;
var colIndex=0;
var box2Darr=new Array();
box2Darr[rowIndex]=new Array();
var boxes=$('.nivo-box',slider);
if(settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
boxes=$('.nivo-box',slider)._reverse();
}
boxes.each(function(){
box2Darr[rowIndex][colIndex]=$(this);
colIndex++;
if(colIndex==settings.boxCols){
rowIndex++;
colIndex=0;
box2Darr[rowIndex]=new Array();
}
}
);
for(var cols=0;
cols<(settings.boxCols*2);
cols++){
var prevCol=cols;
for(var rows=0;
rows<settings.boxRows;
rows++){
if(prevCol>=0&&prevCol<settings.boxCols){
(function(row,col,time,i,totalBoxes){
var box=$(box2Darr[row][col]);
var w=box.width();
var h=box.height();
if(settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse'){
box.width(0).height(0);
}
if(i==totalBoxes-1){
setTimeout(function(){
box.animate({
opacity:'1',width:w,height:h}
,settings.animSpeed/1.3,'',function(){
slider.trigger('nivo:animFinished');
}
);
}
,(100+time));
}
else{
setTimeout(function(){
box.animate({
opacity:'1',width:w,height:h}
,settings.animSpeed/1.3);
}
,(100+time));
}
}
)(rows,prevCol,timeBuff,i,totalBoxes);
i++;
}
prevCol--;
}
timeBuff+=100;
}
}
}
var shuffle=function(arr){
for(var j,x,i=arr.length;
i;
j=parseInt(Math.random()*i),x=arr[--i],arr[i]=arr[j],arr[j]=x);
return arr;
}
var trace=function(msg){
if(this.console&&typeof console.log!="undefined")console.log(msg);
}
this.stop=function(){
if(!$(element).data('nivo:vars').stop){
$(element).data('nivo:vars').stop=true;
trace('Stop Slider');
}
}
this.start=function(){
if($(element).data('nivo:vars').stop){
$(element).data('nivo:vars').stop=false;
trace('Start Slider');
}
}
settings.afterLoad.call(this);
return this;
}
;
$.fn.nivoSlider=function(options){
return this.each(function(key,value){
var element=$(this);
if(element.data('nivoslider'))return element.data('nivoslider');
var nivoslider=new NivoSlider(this,options);
element.data('nivoslider',nivoslider);
}
);
}
;
$.fn.nivoSlider.defaults={
effect:'random',slices:15,boxCols:8,boxRows:4,animSpeed:500,pauseTime:3000,startSlide:0,directionNav:true,directionNavHide:true,controlNav:true,controlNavThumbs:false,controlNavThumbsFromRel:false,controlNavThumbsSearch:'.jpg',controlNavThumbsReplace:'_thumb.jpg',keyboardNav:true,pauseOnHover:true,manualAdvance:false,captionOpacity:0.8,prevText:'Prev',nextText:'Next',beforeChange:function(){
}
,afterChange:function(){
}
,slideshowEnd:function(){
}
,lastSlide:function(){
}
,afterLoad:function(){
}
}
;
$.fn._reverse=[].reverse;
}
)(jQuery);
CSS代码(orman.css):
@charset "utf-8";/* theme-orman */
.theme-orman.slider-wrapper{width:960px;height:340px;position:relative;margin:0 auto;}
.theme-orman .nivoSlider{position:relative;width:960px;height:340px;background:url(../img/loading.gif) no-repeat 50% 50%;}
.theme-orman .nivoSlider img{position:absolute;top:0px;left:0px;display:none;width:960px;/* Make sure your images are the same size */
height:340px;/* Make sure your images are the same size */
}
.theme-orman .nivoSlider a{border:0;display:block;}
.theme-orman .nivo-controlNav-bg{position:absolute;left:0;bottom:-15px;width:960px;height:44px;z-index:100;background:url(../img/slider_nav_bg.png) no-repeat}
.theme-orman .nivo-controlNav{position:absolute;left:472px;bottom:4px;margin-left:-30px;/* Tweak this to center bullets */
z-index:101;}
.theme-orman .nivo-controlNav a{display:block;width:12px;height:12px;background:url(../img/slider_nav_button.png) no-repeat;text-indent:-9999px;border:0;margin-right:7px;float:left;}
.theme-orman .nivo-controlNav a.active{background-position:0 -12px;}
.theme-orman .nivo-directionNav a{display:block;width:25px;height:240px;background:url(../img/arrows.png) no-repeat 0% 50%;text-indent:-9999px;border:0;top:40px;}
.theme-orman a.nivo-nextNav{background-position:100% 50%;right:-24px;padding-right:20px;}
.theme-orman a.nivo-prevNav{left:-24px;padding-left:20px;}
.theme-orman .nivo-caption{font-family:Helvetica,Arial,sans-serif;}
.theme-orman .nivo-caption a{color:#fff;border-bottom:1px dotted #fff;}
.theme-orman .nivo-caption a:hover{color:#fff;}
.theme-orman .ribbon{background:url(../img/ribbon.png) no-repeat;width:111px;height:111px;position:absolute;top:-4px;left:-5px;z-index:300;}