2010-08-31 87 views
0

我从http://www.simplesli.de创建了一个simpleSli.de,但我无法弄清楚如何让它自动滑动。任何帮助将不胜感激。如何在simpleSli.de上自动播放幻灯片

他们网站上说,我只是要做到这一点

<div class="auto-slider" rel="group"></div> 

// Add this javascript, and ensure it appears after the simpleSlide() call 

$('.auto-slider').each(function() { 
    var related_group = $(this).attr('rel'); 

    window.setInterval("simpleSlideAction('.right-button', " + related_group + ");", 4000); 
}); 

但我已经尝试过和它的工作不适合我。我想也许我做错了。这里是所有的jQuery插件,如果有人想看到整个事情。这里是我的幻灯片设置http://leodruker.theorydesign.ca/about/

function simpleSlide(incoming_options) { 
    jQuery(function($) { 
     var options = { 
      'status_width': 20, 
      'status_color_inside': '#fff', 
      'status_color_outside': '#aaa', 
      'set_speed': 1000, 
      'fullscreen' : 'false', 
      'swipe': 'true', 
      'callback': 'function()' 
     }; 

     $.extend(options, incoming_options); 

     $.ss_options = options; 

     $('.simpleSlide-slide').css({ 
      'opacity': '0' 
     }); 

     $('.simpleSlide-window').prepend('<span id="ssLoading" style="color: #808080;font-family:Helvetica, Arial, sans-serif;font-size: 12px; margin: 10px 0 0 10px;display: block">Loading slides...</span>'); 

     var no_of_images = $('.simpleSlide-slide img').size(); 

     if(no_of_images > 0) { 

      var images = new Array(); 
      var i = 0; 
      $('.simpleSlide-slide img').each(function() { 
       images[i] = $(this).attr('src'); 
       i++; 
      }); 

      i = 0; 

      $(images).each(function(){ 
       var imageObj = new Image(); 
       imageObj.src = images[i]; 

       if((imageObj).complete){ 
        no_of_images--; 
        i++; 
        if(no_of_images == 0) { 
         ssInit(); 
        }; 
       } else { 
        $(imageObj).load(function() { 
         no_of_images--; 
         i++; 
         if(no_of_images == 0){ 
          ssInit(); 
         }; 
        }); 
       }; 
      }); 
     } else { 
      ssInit(); 
     }; 
    }); 
}; 

function ssInit(){ 
    /* Set the dimensions of each simpleSlide window and tray 
    * based on the size of the first 'slide' inside that window. 
    * Every slide within a given tray/window should be uniform in dimensions. 
    * Also, set Status Window size, if it's being used. Fire callback when finished. 
    */ 

    jQuery(function($) { 
     $('.simpleSlide-window').each(function() { 
      if($.ss_options.fullscreen == 'true'){ 
       $('body').css('overflow', 'hidden'); 
      } 
      var window_contents = $(this).html(); 
      var cleaned_contents = removeWhiteSpace(window_contents); 
      $(this).html(cleaned_contents); 

      var slide_count = $(this).find('.simpleSlide-slide').size();   
      $(this).find('.simpleSlide-slide').css('display','block'); 
      var window_height = $(this).find('.simpleSlide-slide').first().outerHeight(); 

      if($.ss_options.fullscreen == 'true'){ 
       fullScreen(this); 
      };   

      $(this).find('.simpleSlide-slide').css({ 
       'display':'inline', 
       'float':'left' 
      }); 

      var window_width = $(this).find('.simpleSlide-slide').first().outerWidth();  

      var window_rel = $(this).attr('rel'); 

      if($.ss_options.fullscreen == 'false'){ 
       $(this).css({ 
        'height': window_height, 
        'width': window_width, 
        'position': 'relative' 
       }); 
      };   

      $(this).css('overflow','hidden'); 

      setTraySize(this, slide_count, window_width); 

      setSimpleSlideStatus(window_rel, window_height, window_width, slide_count); 

      setPaging(this); 

      $(this).find('#ssLoading').remove(); 

      if($.ss_options.swipe = 'true' && !$.browser.msie){ 
       simpleSwipe(this); 
      }; 

      $(this).find('.simpleSlide-slide').animate({ 
       'opacity': '1' 
      }, 300, "swing"); 

     }); 

     /* Fire callback after completion of image load and simpleSlide initialization */ 
     if(typeof($.ss_options.callback) == 'function'){ 
      $.ss_options.callback.call(this); 
     }; 

     /* Gives each slide an 'alt' with the slide number */ 
     function setPaging(this_window) { 
      var page_count = 1; 

      $(this_window).find('.simpleSlide-slide').each(function() { 
       $(this).attr('alt', page_count); 
       page_count++; 
      }); 
     }; 

     function fullScreen(this_s_window){ 
      var base_img = new Image(); 
      base_img.src = $(this_s_window).find('img').first().attr('src'); 
      /*var rendered_img = $(this_s_window).find('img').first();*/ 
      var window_prop = $(window).width()/$(window).height(); 
      var image_prop = base_img.width/base_img.height; 
      var wh = $(window).height(); 
      var ww = $(window).width(); 

      if(window_prop > image_prop){ 
       var new_height = (ww/base_img.width) * base_img.height; 
       var height_offset = (new_height - wh)/2; 
       $(this_s_window).find('img').attr('width', ww).attr('height', new_height).css('marginLeft', 0); 
       $(this_s_window).css({ 
        'marginLeft': 0,       /* Reset to beginning */ 
        'marginTop':'-' + height_offset + 'px', 
        'height': wh + height_offset 
       }); 
       $(this_s_window).find('.simpleSlide-slide').css({ 
        'width': ww, 
        'height': new_height, 
        'overflow': 'hidden' 
       });    
      } else { 
       var new_width = (wh/base_img.height) * base_img.width; 
       var width_offset = (new_width - ww)/2; 
       $(this_s_window).find('img').attr('height', wh).attr('width', new_width); 
       $(this_s_window).find('img').css({ 
        'marginLeft': '-' + width_offset + 'px'     
       }); 
       $(this_s_window).find('.simpleSlide-slide').css({ 
        'width': ww, 
        'height': wh, 
        'overflow': 'hidden' 
       }); 

       /* Reset from other orientation */ 
       $(this_s_window).css({ 
        'marginTop': 0, 
        'height': wh 
       }); 
      }; 

      $(this_s_window).find('.simpleSlide-tray').css('marginLeft', 0); 
     }; 

     /* Sets size of the "tray" that holds the "slides" */ 
     function setTraySize(slideWindow, count, viewer_width) { 

      var slider_width = count * viewer_width; 

      $(slideWindow).find('.simpleSlide-tray').css({ 
       'width': slider_width + 'px' 
      }); 

      $(slideWindow).find('.simpleSlide-slide').css('display','inline-block'); 

     }; 

     /* If user chooses to establish Status Window, this function will set 
     * the dimensions of the window based on the desired width. 
     * The window (and its inherent slide's) dimensions are a relative factor 
     * of the main window's size, so the status window will be proportionally 
     * the same as the main window and its tray. 
     */ 
     function setSimpleSlideStatus(this_rel, height, width, image_count) { 

      var ratio = $.ss_options.status_width/width; 
      var status_height = ratio*height; 

      $('.simpleSlideStatus-tray[rel="' + this_rel + '"]') 
       .css({ 
        'width': $.ss_options.status_width * image_count, 
        'height': status_height, 
        'background-color': $.ss_options.status_color_outside 
       }); 

      $('.simpleSlideStatus-window[rel="' + this_rel + '"]') 
       .css({ 
        'width': $.ss_options.status_width, 
        'height': status_height, 
        'background-color': $.ss_options.status_color_inside 
       }); 

      if(jQuery.support.opacity){ 
       $('.simpleSlideStatus-window .simpleSlideStatus-tray[rel="' + this_rel + '"]') 
        .css({ 
         'opacity': '.5', 
         'background-color': $.ss_options.status_color_inside 
       }); 
      }; 

      if(!jQuery.support.opacity){ 
       $('.simpleSlideStatus-window .simpleSlideStatus-tray[rel="' + this_rel + '"]').css({ 
        'filter': 'alpha(opacity=50)', 
        'background-color': $.ss_options.status_color_inside 
       }); 
      }; 
     }; 

     /* Actuates upon the clicking of a left- or right-button classed element */ 
     $('.left-button, .right-button, .jump-to').live('click', function() { 

      var rel = $(this).attr('rel'); 

      if (!$('div.simpleSlide-tray[rel="' + rel + '"]').is(':animated')) { 
       simpleSlideAction(this, rel); 
      }; 
     }); 
    }); 
}; 

function simpleSwipe(this_window) { 
    // Default thresholds & swipe functions 
    var defaults = { 
     threshold: { 
      x: $(this_window).width() * .15, 
      y: $(this_window).height() * .1 
     }, 
     swipeLeft: function() { 
      simpleSlideAction('.right-button', $(this_window).attr('rel')); 
     }, 
     swipeRight: function() { 
      simpleSlideAction('.left-button', $(this_window).attr('rel')); 
     }, 
     preventDefaultEvents: true 
    }; 

    var options = $.extend(defaults, options); 

    if (!this_window) return false; 

    return $(this_window).each(function() { 

     var me = $(this_window); 

     // Private variables for each element 
     var originalCoord = { x: 0, y: 0 }; 
     var finalCoord = { x: 0, y: 0 }; 

     // Screen touched, store the original coordinate 
     function touchStart(event) { 
      originalCoord.x = event.targetTouches[0].pageX; 
      originalCoord.y = event.targetTouches[0].pageY; 
     }; 

     // Store coordinates as finger is swiping 
     function touchMove(event) { 
      if (defaults.preventDefaultEvents){ 
       event.preventDefault(); 
      }; 
      finalCoord.x = event.targetTouches[0].pageX; // Updated X,Y coordinates 
      finalCoord.y = event.targetTouches[0].pageY; 
     }; 

     // Done Swiping 
     // Swipe should only be on X axis, ignore if swipe on Y axis 
     // Calculate if the swipe was left or right 
     function touchEnd(event) { 
      var changeY = originalCoord.y - finalCoord.y; 
      if(changeY < defaults.threshold.y && changeY > (defaults.threshold.y*-1)) { 
       changeX = originalCoord.x - finalCoord.x; 

       if(changeX > defaults.threshold.x) {      
        defaults.swipeLeft(); 
       }; 
       if(changeX < (defaults.threshold.x*-1)) {     
        defaults.swipeRight(); 
       }; 
      }; 
     }; 

     // Swipe was canceled 
     function touchCancel(event) { 
      console.log('Canceling swipe gesture...'); 
     }; 

     // Add gestures to all swipable areas 
     this_window.addEventListener("touchstart", touchStart, false); 
     this_window.addEventListener("touchmove", touchMove, false); 
     this_window.addEventListener("touchend", touchEnd, false); 
     this_window.addEventListener("touchcancel", touchCancel, false); 

    }); 
}; 

function simpleSlideAction(action, rel_no) { 
    jQuery(function($) {  
     var move_speed = $.ss_options.set_speed; 
     var image_count = $('.simpleSlide-window[rel="' + rel_no + '"]').find('.simpleSlide-slide').size(); 
     var window_width = $('.simpleSlide-window[rel="' + rel_no + '"]').innerWidth(); 
     var status_window_width = $('.simpleSlideStatus-window[rel="' + rel_no + '"]').innerWidth(); 
     var status_tray_width = status_window_width * image_count; 
     var current_tray_margin = parseInt($('.simpleSlide-tray[rel="' + rel_no + '"]').css('marginLeft'), 10); 
     var current_status_window_margin = parseInt($('.simpleSlideStatus-tray .simpleSlideStatus-window[rel="' + rel_no + '"]').css('marginLeft'), 10); 
     var current_status_tray_margin = parseInt($('.simpleSlideStatus-window .simpleSlideStatus-tray[rel="' + rel_no + '"]').css('marginLeft'), 10); 

     if($(action).is('.jump-to')) { 
      var to_page = $(action).attr('alt'); 
      var j_margin = (to_page - 1) * (window_width * (-1)); 
      var st_margin = (to_page - 1) * (status_window_width * (-1)); 
      var sw_margin = (to_page - 1) * (status_window_width); 

      move(j_margin, sw_margin, st_margin); 
     }; 

     if($(action).is('.left-button')) {  
      if(current_tray_margin == 0) { 
       var j_margin = current_tray_margin - ((image_count - 1) * window_width); 
       var st_margin = current_status_tray_margin - ((image_count - 1) * status_window_width); 
       var sw_margin = current_status_window_margin + ((image_count - 1) * status_window_width);   
      } else { 
       var j_margin = current_tray_margin + window_width; 
       var st_margin = current_status_tray_margin + status_window_width; 
       var sw_margin = current_status_window_margin - status_window_width;   
      }; 

      move(j_margin, sw_margin, st_margin); 
     }; 

     if($(action).is('.right-button')) { 
      if(current_tray_margin == (image_count - 1) * (window_width * -1)) { 
       var j_margin = 0; 
       var st_margin = 0; 
       var sw_margin = 0;     
      } else { 
       var j_margin = current_tray_margin - window_width; 
       var st_margin = current_status_tray_margin - status_window_width; 
       var sw_margin = current_status_window_margin + status_window_width;   
      }; 

      move(j_margin, sw_margin, st_margin); 
     };  

     function move(new_margin, new_swindow_margin, new_stray_margin) { 
      $('.simpleSlide-tray[rel="' + rel_no + '"]').animate({ 
       'marginLeft': new_margin 
      }, move_speed, "swing"); 

      $('.simpleSlideStatus-window .simpleSlideStatus-tray[rel="' + rel_no + '"]') 
       .animate({ 
        'marginLeft': new_stray_margin    
      }, move_speed, "swing"); 

      $('.simpleSlideStatus-tray .simpleSlideStatus-window[rel="' + rel_no + '"]').animate({ 
        'marginLeft': new_swindow_margin   
      }, move_speed, "swing");   
     }; 
    }); 
}; 


function removeWhiteSpace(raw) { 
    var cleaned_string = raw.replace(/[\r+\n+\t+]\s\s+/g, ""); 
    return cleaned_string; 
}; 
+0

请不要将字符串传递到'setTimeout'! – 2010-08-31 13:58:52

回答

2

你需要有非盟右按钮,这样:

<div class="right-button" rel="1"></div> 
<div class="auto-slider" rel="1"></div> 

// Add this javascript, and ensure it appears after the simpleSlide() call 

$('.auto-slider').each(function() { 
    var related_group = $(this).attr('rel'); 
    clearInterval($.autoslide); 
    window.setInterval("simpleSlideAction('.right-button', " + related_group + ");", 4000); 
}); 
0

我能弄明白。我将它添加到标题中。

<script type="text/javascript"> 

    $('#setting_up').ready(function() { 
     simpleSlide({ 
      'set_speed': 200, 
      'status_width': 20, 
      'status_color_outside': '#333', 
      'status_color_inside': '#c6ff00', 
      'callback': function() { 
       $('.auto-slider').each(function() {        
        var related_group = $(this).attr('rel'); 
        clearInterval($.autoslide); 
        $.autoslide = setInterval("simpleSlideAction('.right-button', " + related_group + ");", 9500); 
       }); 
      } 
     }); 
    }); 



</script>