slider.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. $(document).ready(function () {
  2. $('#slider').slider({ speed: 500 });
  3. });
  4. (function($) {
  5. $.fn.extend({
  6. slider: function(options) {
  7. var settings = $.extend({
  8. speed: 500
  9. },
  10. options);
  11. return this.each(function() {
  12. var slidercontents = $(this).addClass('image-slider-contents');
  13. var slider = $('<div/>').addClass('image-slider').attr('id', slidercontents.attr('id'));
  14. var backbutton = $('<div/>').addClass('image-slider-back');
  15. var forwardbutton = $('<div/>').addClass('image-slider-forward');
  16. slidercontents.removeAttr('id');
  17. slidercontents.before(slider);
  18. slider.append(backbutton);
  19. slider.append(slidercontents);
  20. slider.append(forwardbutton);
  21. var total = $('> div', slidercontents).length;
  22. var left = 0;
  23. var w;
  24. var width;
  25. var maxScroll;
  26. slider.append($('<div/>').css('display', 'none').addClass('preview').append($('<div/>').addClass('img-large')
  27. .append($('<div/>').html('&nbsp').click(function(e) {
  28. e.stopPropagation();
  29. e.stopImmediatePropagation();
  30. //display previous image
  31. var img = $(this).parent().find('img');
  32. var index = parseInt(img.attr('class'));
  33. img.removeAttr('class');
  34. if (index > 1) {
  35. index--;
  36. var src = $('.' + index + ' div img').attr('src');
  37. var txt = $('.' + index + ' div a').html();
  38. $('.preview').find('.label').html(txt);
  39. $('.preview').find('img').addClass('' + (index) + '').attr('src', src).stop(false, true).animate({
  40. },
  41. 1000);
  42. if(index==1){
  43. $( ".left" ).css( "background" ,"url(../../../static/images/home/left-gray.png)");
  44. $( ".right" ).css( "background" ,"url(../../../static/images/home/right.png)");
  45. }else{
  46. $( ".left" ).css( "background" ,"url(../../../static/images/home/left.png)");
  47. $( ".right" ).css( "background" ,"url(../../../static/images/home/right.png)");
  48. }
  49. }
  50. else{
  51. }
  52. $('.preview').find('img').addClass('' + (index) + '');
  53. }).addClass('left'))
  54. .append($('<div/>').html('&nbsp').click(function(e) {
  55. e.stopPropagation();
  56. e.stopImmediatePropagation();
  57. //display next image
  58. var img = $(this).parent().find('img');
  59. var index = parseInt(img.attr('class'));
  60. img.removeAttr('class');
  61. if (index < total) {
  62. index++;
  63. var src = $('.' + index + ' div img').attr('src');
  64. var txt = $('.' + index + ' div a').html();
  65. $('.preview').find('.label').html(txt);
  66. $('.preview').find('img').addClass('' + (index) + '').attr('src', src).stop(false, true).animate({
  67. },
  68. 1000);
  69. if(index==total){
  70. $( ".right" ).css( "background" ,"url(../../../static/images/home/right-gray.png)");
  71. $( ".left" ).css( "background" ,"url(../../../static/images/home/left.png)");
  72. }else{
  73. $( ".right" ).css( "background" ,"url(../../../static/images/home/right.png)");
  74. $( ".left" ).css( "background" ,"url(../../../static/images/home/left.png)");
  75. }
  76. }
  77. else{
  78. }
  79. $('.preview').find('img').addClass('' + (index) + '')
  80. }).addClass('right'))
  81. .append($('<img/>'))).append($('<div/>').addClass('label').css('opacity', '0.8'))
  82. .append($('<div/>').addClass('close').click(function(e) {
  83. $(this).parent().fadeOut("slow");
  84. $('.preview .img-large img').removeAttr('class');
  85. })));
  86. // $(document).click(function(e) {
  87. // if ($('.preview').css('display') == 'block')
  88. // $('.preview').fadeOut("slow");
  89. // });
  90. function initialize() {
  91. var tempElements = $('> div', slidercontents);
  92. var allElements = new Array();
  93. tempElements.each(function(index, el) {
  94. allElements.push($('<div/>').addClass('' + (index + 1) + '').addClass('outer').append(el));
  95. });
  96. allElements = $(allElements);
  97. $('> div', slidercontents).remove();
  98. var wrapper = $('<div/>').addClass('contents-wrapper');
  99. allElements.each(function(index, el) {
  100. wrapper.append($(el));
  101. });
  102. slidercontents.append(wrapper);
  103. var w = $('.outer:eq(0)', slidercontents).outerWidth() + parseFloat($('.outer:eq(0)', slidercontents).css('margin-left')) + parseFloat($('.outer:eq(0)', slidercontents).css('margin-right'));
  104. var width = (total ) * w;
  105. var maxScroll = width - $('.image-slider-contents').outerWidth();
  106. wrapper.css({
  107. width: width
  108. });
  109. $('> div > div', slidercontents).css('display', '');
  110. $('.outer a').click(function(e) {
  111. e.stopPropagation();
  112. e.stopImmediatePropagation();
  113. });
  114. $('.outer').hover(function() {
  115. $(this).addClass('active');
  116. },
  117. function() {
  118. $(this).removeClass('active');
  119. }).click(
  120. function(e) {
  121. e.stopPropagation();
  122. e.stopImmediatePropagation();
  123. var cls = $(this).attr('class').split(' ')[0];
  124. var p = $(this).find('div');
  125. var img = p.find('img').attr('src');
  126. var preview = $('.preview');
  127. var l = $('.image-slider').width() / 2 - preview.outerWidth() / 2;
  128. var t = (p.offset().top - preview.height());
  129. t -= t / 2;
  130. preview.css({
  131. left: l,
  132. top: t
  133. });
  134. var text = p.find('a').html();
  135. preview.find('img').attr('src', img).addClass(cls);
  136. preview.find('.label').html(text);
  137. preview.fadeIn("slow");
  138. if($(".preview .img-large img").hasClass('1')){
  139. $( ".left" ).css( "background" ,"url(../../../static/images/home/left-gray.png)");
  140. $( ".right" ).css( "background" ,"url(../../../static/images/home/right.png)");
  141. }else if($(".preview .img-large img").hasClass(total)){
  142. $( ".right" ).css( "background" ,"url(../../../static/images/home/right-gray.png)");
  143. $( ".left" ).css( "background" ,"url(../../../static/images/home/left.png)");
  144. }else{
  145. $( ".left" ).css( "background" ,"url(../../../static/images/home/left.png)");
  146. $( ".right" ).css( "background" ,"url(../../../static/images/home/right.png)");
  147. }
  148. });
  149. }
  150. initialize();
  151. function getDimensions(value) {
  152. return value + 'px';
  153. }
  154. });
  155. }
  156. });
  157. })(jQuery);