Fancybox gallery without a href?

后端 未结 5 646
自闭症患者
自闭症患者 2020-12-11 04:35

I want to make fancybox gallery with img without using links (a href)? How i can do that?

HTML:

相关标签:
5条回答
  • 2020-12-11 04:54

    the easy way, you can add anchor/a tag in each img from id='foo2'.

    $('#foo2 img').each(function (){
     var currentImage = $(this); 
     currentImage.wrap("<a class='fancybox' href='" + currentImage.attr("src") + "'</a>"); });
    

    And then:

    $(".fancybox").fancybox({
        openEffect  : 'none',
        closeEffect : 'none',
        beforeShow : function() {
        this.title =  'Image ' + (this.index + 1) + ' of ' + this.group.length + ' '+(this.title ? '' + this.title + '' : '');
       },
       helpers  : {
            thumbs  : {
                width   : 50,
                height  : 50
            }
        }
    });
    
    0 讨论(0)
  • 2020-12-11 04:56
    $(document).ready(function(){
    
        $(".fancy").each(function () {
            $(this).replaceWith('<a class="fancybox" href="'+$(this).attr('src')+'">'+$(this)[0].outerHTML +'</a>');
        }).promise().done(function(){ $('.fancybox').fancybox(); });
    
    });
    

    then:

    <img class="fancy" src="1.jpg" alt="" />
    <img class="fancy" src="2.jpg" alt="" />
    

    and then with further customization

    <img class="fancy" src="2.jpg" data-small-image="small2.jpg" alt="" />
    
    0 讨论(0)
  • 2020-12-11 04:58

    This worked for me:

    $(".CLASSNAME").each(function(){
    
       $(this).fancybox({
    
           href : $(this).attr('src')
    
       });
    
    
    });
    
    0 讨论(0)
  • 2020-12-11 05:02

    You cannot have a gallery using the manual method .click() unless you set all the elements of the gallery inside the fancybox script itself like:

    $("#foo2 img").click(function(e) {
     $.fancybox([
      'images/01.jpg',
      'images/02.jpg', // etc
      ],{
       // fancybox options 
       'type': 'image' // etc.
     }); // fancybox
    }); // click 
    

    However, to make it work the way you want and simulate a regular fancybox gallery without using links (<a> tags with a href attributes ), you would need to create your own function with your own custom navigation methods.

    Without changing your HTML, try this JS:

    <script type="text/javascript">
    function fancyBoxMe(index){
     var gallerySize = $("#foo2 img").size();
     if((index+1) == gallerySize){ nexT = 0 } else { nexT = index+1}
     if(index == 0){ preV = (gallerySize-1) } else { preV = index-1}
     var tarGet = $('#foo2 img').eq(index).attr('src');
     $.fancybox({
      'transitionIn' : 'elastic',
      'transitionOut' : 'elastic',
      'speedIn' : 600, 
      'speedOut' : 200, 
      'overlayShow' : false,
      'href': tarGet,
      'titlePosition': 'inside',
      'titleFormat' : function(){
        return 'Image '+(index+1)+' of '+gallerySize+'<a id="preV" href="javascript:;" onclick="fancyBoxMe('+preV+')">prev</a> <a id="nexT" href="javascript:;" onclick="fancyBoxMe('+nexT+')">next</a>';
      }
     }); // fancybox
    } // fancyBoxMe
    $(document).ready(function() {
     $("#foo2 img").each(function(i){
      $(this).bind('click', function(){
       fancyBoxMe(i);
      }); //bind        
     }); //each
    }); // ready
    </script>
    

    That creates a fancybox gallery from the <img> tags, with a nice cycling effect. Also, with a little of CSS we can have the navigation controls using the fancybox arrow icons. See a working example here.

    Since the navigation control is totally manual, you don't actually need the rel attribute on the <img> tag.

    Please notice that the code above is for Fancybox v1.3.x (I assumed you are using v1.3.x because the API options).

    0 讨论(0)
  • 2020-12-11 05:13

    You need to do the fancybox call on the images:

    $('#foo2 img').fancybox({
      'transitionIn'  :   'elastic',
      'transitionOut' :   'elastic',
      'speedIn'       :   600, 
      'speedOut'      :   200, 
      'overlayShow'   :   false
    });
    

    should work but i haven't tested it...

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