Slideshow in FancyBox Image Gallery?

后端 未结 3 1701
独厮守ぢ
独厮守ぢ 2020-12-12 01:49

I am just starting out learning some HTML and javascript (read: I know practically nothing about this stuff) and would like to have my index.html page open a rotating image

相关标签:
3条回答
  • 2020-12-12 01:55

    Here is how I set up the function. I added the count because when loading a gallery the onStart/onComplete calls will fire everytime a new image loads. I only want the first call to bind the setInterval to the next call.

      function toggleRotating(fromButton) {
          count = count + 1;
          if (fromButton == false) {
            clearInterval(rotatingInterval);
            rotatingInterval = false;
            count = 0;
          } else {
            if(count == 1)
                rotatingInterval = setInterval($.fancybox.next, 10000);
    
          }
       }
    

    And here's my global vars and method of launching fancybox.

    var rotatingInterval = false;
    var count = 0;
    $(function () {
        $("a.slide").attr('rel', 'presentation1').fancybox({'autoDimensions':false,'height':540,'width':720,'autoScale':false,'cyclic':true, 'onStart': function(){ toggleRotating(true); } });
    });
    

    I didn't create a button to stop rotating. I think I will make it so if you click on the next or prev buttons it will toggleRotating to false.

    0 讨论(0)
  • 2020-12-12 02:00

    To turn your fancybox into a slideshow once it opens, without extra buttons, use the "onComplete" option to set a timer to call "next()". For example:

    jQuery("a.fancybox").fancybox({
        "onComplete":function() {
            clearTimeout(jQuery.fancybox.slider);
            jQuery.fancybox.slider=setTimeout("jQuery.fancybox.next()",5000);
        }
    });
    
    0 讨论(0)
  • 2020-12-12 02:09

    You can add this to the end of your javascript:

    setInterval($.fancybox.next, 10000);
    

    The number represents the waiting time, in milliseconds (so in my example it's 10 seconds). Also, be sure, in the options of the fancybox, to specify cyclic = true, or else it will stop at the last image. (unless that's what you want)

    edit: To add a pause you could do something like the following:

    Instead of that one line in your javascript, add this:

    var rotatingInterval = FALSE;
    function toggleRotating(fromButton) {
      if (rotatingInterval) {
        clearInterval(rotatingInterval);
        rotatingInterval = FALSE;
      } else {
        rotatingInterval = setInterval($.fancybox.next, 10000);
        if (fromButton)
          $.fancybox.next();
      }
    }
    toggleRotating(FALSE);
    

    And then you can have a button in your html, like this:

    <input type="button" value="Pause" onclick="toggleRotating(TRUE);" />
    

    Which would do play/pause.

    0 讨论(0)
提交回复
热议问题