2010-05-28 4 views
16

나는 내 사이트에 가장 적합한 솔루션 인 Nivo Slider를 발견했습니다. 그러나 DIV를 슬라이드에 적용하고 IMG가 아니라 DIV를 기본적으로 사용하도록합니다. JSG 파일에서 DIV로 모든 IMG를 변경하려고 시도했지만 행운이없이 당연히 ...Nivo Slide IMG 대신 DIV 사용

아무도 도와 줄 수 있습니까 ??

/* 
* jQuery Nivo Slider v2.0 
* http://nivo.dev7studios.com 
* 
* Copyright 2010, Gilbert Pellegrom 
* Free to use and abuse under the MIT license. 
* http://www.opensource.org/licenses/mit-license.php 
* 
* May 2010 - Pick random effect from specified set of effects by toronegro 
* May 2010 - controlNavThumbsFromRel option added by nerd-sh 
* May 2010 - Do not start nivoRun timer if there is only 1 slide by msielski 
* April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk) 
* March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk) 
*/ 

(function($) { 

    $.fn.nivoSlider = function(options) { 

     //Defaults are below 
     var settings = $.extend({}, $.fn.nivoSlider.defaults, options); 

     return this.each(function() { 
      //Useful variables. Play carefully. 
      var vars = { 
       currentSlide: 0, 
       currentImage: '', 
       totalSlides: 0, 
       randAnim: '', 
       running: false, 
       paused: false, 
       stop:false 
      }; 

      //Get this slider 
      var slider = $(this); 
      slider.data('nivo:vars', vars); 
      slider.css('position','relative'); 
      slider.addClass('nivoSlider'); 

      //Find our slider children 
      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'); 
       } 
       //Get img width & height 
       var childWidth = child.width(); 
       if(childWidth == 0) childWidth = child.attr('width'); 
       var childHeight = child.height(); 
       if(childHeight == 0) childHeight = child.attr('height'); 
       //Resize the slider 
       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++; 
      }); 

      //Set startSlide 
      if(settings.startSlide > 0){ 
       if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1; 
       vars.currentSlide = settings.startSlide; 
      } 

      //Get initial image 
      if($(kids[vars.currentSlide]).is('img')){ 
       vars.currentImage = $(kids[vars.currentSlide]); 
      } else { 
       vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); 
      } 

      //Show initial link 
      if($(kids[vars.currentSlide]).is('a')){ 
       $(kids[vars.currentSlide]).css('display','block'); 
      } 

      //Set first background 
      slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat'); 

      //Add initial slices 
      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' }) 
        ); 
       } else { 
        slider.append(
         $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' }) 
        ); 
       } 
      } 

      //Create caption 
      slider.append(
       $('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity }) 
      );   
      //Process initial caption 
      if(vars.currentImage.attr('title') != ''){ 
       $('.nivo-caption p', slider).html(vars.currentImage.attr('title'));     
       $('.nivo-caption', slider).fadeIn(settings.animSpeed); 
      } 

      //In the words of Super Mario "let's a go!" 
      var timer = 0; 
      if(!settings.manualAdvance && kids.length > 1){ 
       timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 
      } 

      //Add Direction nav 
      if(settings.directionNav){ 
       slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>'); 

       //Hide Direction nav 
       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'); 
       }); 
      } 

      //Add Control nav 
      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 +'</a>'); 
        } 

       } 
       //Set initial active link 
       $('.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'); 
       }); 
      } 

      //Keyboard Navigation 
      if(settings.keyboardNav){ 
       $(window).keypress(function(event){ 
        //Left 
        if(event.keyCode == '37'){ 
         if(vars.running) return false; 
         clearInterval(timer); 
         timer = ''; 
         vars.currentSlide-=2; 
         nivoRun(slider, kids, settings, 'prev'); 
        } 
        //Right 
        if(event.keyCode == '39'){ 
         if(vars.running) return false; 
         clearInterval(timer); 
         timer = ''; 
         nivoRun(slider, kids, settings, 'next'); 
        } 
       }); 
      } 

      //For pauseOnHover setting 
      if(settings.pauseOnHover){ 
       slider.hover(function(){ 
        vars.paused = true; 
        clearInterval(timer); 
        timer = ''; 
       }, function(){ 
        vars.paused = false; 
        //Restart the timer 
        if(timer == '' && !settings.manualAdvance){ 
         timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 
        } 
       }); 
      } 

      //Event when Animation finishes 
      slider.bind('nivo:animFinished', function(){ 
       vars.running = false; 
       //Hide child links 
       $(kids).each(function(){ 
        if($(this).is('a')){ 
         $(this).css('display','none'); 
        } 
       }); 
       //Show current link 
       if($(kids[vars.currentSlide]).is('a')){ 
        $(kids[vars.currentSlide]).css('display','block'); 
       } 
       //Restart the timer 
       if(timer == '' && !vars.paused && !settings.manualAdvance){ 
        timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 
       } 
       //Trigger the afterChange callback 
       settings.afterChange.call(this); 
      }); 
     }); 

     function nivoRun(slider, kids, settings, nudge){ 
      //Get our vars 
      var vars = slider.data('nivo:vars'); 
      if((!vars || vars.stop) && !nudge) return false; 

      //Trigger the beforeChange callback 
      settings.beforeChange.call(this); 

      //Set current background before change 
      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; 
       //Trigger the slideshowEnd callback 
       settings.slideshowEnd.call(this); 
      } 
      if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1); 
      //Set vars.currentImage 
      if($(kids[vars.currentSlide]).is('img')){ 
       vars.currentImage = $(kids[vars.currentSlide]); 
      } else { 
       vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); 
      } 

      //Set acitve links 
      if(settings.controlNav){ 
       $('.nivo-controlNav a', slider).removeClass('active'); 
       $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active'); 
      } 

      //Process caption 
      if(vars.currentImage.attr('title') != ''){ 
       if($('.nivo-caption', slider).css('display') == 'block'){ 
        $('.nivo-caption p', slider).fadeOut(settings.animSpeed, function(){ 
         $(this).html(vars.currentImage.attr('title')); 
         $(this).fadeIn(settings.animSpeed); 
        }); 
       } else { 
        $('.nivo-caption p', slider).html(vars.currentImage.attr('title')); 
       }     
       $('.nivo-caption', slider).fadeIn(settings.animSpeed); 
      } else { 
       $('.nivo-caption', slider).fadeOut(settings.animSpeed); 
      } 

      //Set new slice backgrounds 
      var i = 0; 
      $('.nivo-slice', slider).each(function(){ 
       var sliceWidth = Math.round(slider.width()/settings.slices); 
       $(this).css({ height:'0px', opacity:'0', 
        background: 'url('+ vars.currentImage.attr('src') +') no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' }); 
       i++; 
      }); 

      if(settings.effect == 'random'){ 
       var anims = new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade"); 
       vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))]; 
       if(vars.randAnim == undefined) vars.randAnim = 'fade'; 
      } 

      //Run random effect from specified set (eg: effect:'fold,fade') 
      if(settings.effect.indexOf(',') != -1){ 
       var anims = settings.effect.split(','); 
       vars.randAnim = $.trim(anims[Math.floor(Math.random()*anims.length)]); 
      } 

      //Run effects 
      vars.running = true; 
      if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' || 
       settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){ 
       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'){ 
       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'){ 
       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'){ 
       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'){ 
       var i = 0; 
       $('.nivo-slice', slider).each(function(){ 
        $(this).css('height','100%'); 
        if(i == settings.slices-1){ 
         $(this).animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); }); 
        } else { 
         $(this).animate({ opacity:'1.0' }, (settings.animSpeed*2)); 
        } 
        i++; 
       }); 
      } 
     } 
    }; 

    //Default settings 
    $.fn.nivoSlider.defaults = { 
     effect:'random', 
     slices:15, 
     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, 
     beforeChange: function(){}, 
     afterChange: function(){}, 
     slideshowEnd: function(){} 
    }; 

    $.fn.reverse = [].reverse; 

})(jQuery); 

미리 감사드립니다. :-))

+11

무엇보다 필요한 것이 있습니까? 방금 누군가가 이것을 DIV와 함께 작동시키는 방법을 알고 있는지 물었습니다. 예, 인터넷에서 가져온 스크립트입니다.하지만 그 질문에 대해서는 질문 할 수 없습니까? –

답변

20

편집 : 이미지가 배경 이미지 인 슬라이스 (divs)가 생성되므로 슬라이스 효과는 이미지 이외의 다른 요소에 적용 할 수 없습니다. 배경 이미지는 슬라이스의 위치에 따라 배치 된 다음 슬라이스 (div)가 위에서 아래로, 아래에서 위로 이동합니다. div의 contet를 다른 div의 배경으로 설정할 수 없으므로 img 이외의 다른 요소로는 다시 할 수 없습니다. (음, CSS 3와 html 5로 할 수있을 것 같네요 .-) 그러나 waaait :-))

몇 가지 작업을 수행 할 수 있습니다. 자바 스크립트로 다이빙하고 원하는대로 니보를 변경하거나 자신의 플러그인을 작성하십시오. tutorial here을 참조하십시오. 이것은 상당히 많은 작업이 될 수 있고 바퀴를 재발 명하고 싶지 않기 때문에 사용자 정의를위한 더 나은 지원을하는 플러그인을 사용하는 것이 좋습니다. 가능한 커스터마이징의 플러그인 수준을 파악하려면 항상 기본값을 살펴 봐야합니다. 일반적으로 - '기본값'(== 사용 가능한 옵션)이 많을수록 좋습니다. jquery 콘텐츠 슬라이더 플러그인에 대한 수천 개의 블로그 게시물이 있습니다 (예, 이미지 슬라이더가 아닌 콘텐츠 슬라이더를 검색합니다 ;-)). 그래서 구글에 행운을 시도하거나 다음을 확인 :

  • bxSlider 아주 좋은 (그리고 는 원래 이 원하는 하나처럼 보이는
  • 30 bestcoda slider
  • 하나 ..... . 블로그 게시물.이 도움이

희망.

+0

Nivo의 주요 기능 중 하나는 그것이 가지고있는 전환 효과입니다. Kenneth에게 이것은 중요한 것일 수 있습니까? – Agos

+0

내 대답이 업데이트되었습니다. imgs가 아닌 다른 요소로 수행 할 수 없습니다 –

+0

+1 for bxSlider. 그게 제가 지금까지 사용해 왔던 최고입니다. – Brendan

5

따 보십시오 Rhinoslider에보기.

html 요소가있는 nivoslider와 비슷한 전환을 수행 할 수 있습니다.