slidernav.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * SliderNav - A Simple Content Slider with a Navigation Bar
  3. * Copyright 2010 Monjurul Dolon, http://mdolon.com/
  4. * Released under the MIT, BSD, and GPL Licenses.
  5. * More information: http://devgrow.com/slidernav
  6. */
  7. $.fn.sliderNav = function(options) {
  8. var defaults = { items: ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"], debug: false, height: null, arrows: true};
  9. var opts = $.extend(defaults, options); var o = $.meta ? $.extend({}, opts, $$.data()) : opts; var slider = $(this); $(slider).addClass('slidernav');
  10. $('.slider-content li:first', slider).addClass('selected');
  11. $(slider).append('<div class="slider-nav"><ul></ul></div>');
  12. for(var i in o.items) $('.slider-nav ul', slider).append("<li><a alt='#"+o.items[i]+"'>"+o.items[i]+"</a></li>");
  13. var height = $('.slider-nav', slider).height();
  14. if(o.height) height = o.height;
  15. $('.slider-content, .slider-nav', slider).css('height',height);
  16. if(o.debug) $(slider).append('<div id="debug">Scroll Offset: <span>0</span></div>');
  17. $('.slider-nav a', slider).mouseover(function(event){
  18. var target = $(this).attr('alt');
  19. var cOffset = $('.slider-content', slider).offset().top;
  20. var tOffset = $('.slider-content '+target, slider).offset().top;
  21. var height = $('.slider-nav', slider).height(); if(o.height) height = o.height;
  22. var pScroll = (tOffset - cOffset) - height/8;
  23. $('.slider-content li', slider).removeClass('selected');
  24. $(target).addClass('selected');
  25. $('.slider-content', slider).stop().animate({scrollTop: '+=' + pScroll + 'px'});
  26. if(o.debug) $('#debug span', slider).html(tOffset);
  27. });
  28. if(o.arrows){
  29. $('.slider-nav',slider).css('top','20px');
  30. $(slider).prepend('<div class="slide-up end"><span class="arrow up"></span></div>');
  31. $(slider).append('<div class="slide-down"><span class="arrow down"></span></div>');
  32. $('.slide-down',slider).click(function(){
  33. $('.slider-content',slider).animate({scrollTop : "+="+height+"px"}, 500);
  34. });
  35. $('.slide-up',slider).click(function(){
  36. $('.slider-content',slider).animate({scrollTop : "-="+height+"px"}, 500);
  37. });
  38. }
  39. };