Question

Je sais que je peux utiliser les options Framewidth et FrameHeight pour contrôler la taille du trame pour le contenu en ligne et iframe, mais que puis-je faire pour contrôler manuellement la taille du trame lors de l'affichage d'images?

Mon problème est que j'ai des images que je veux afficher dans une boîte de fantaisie extrêmement horizontale et pas beaucoup verticalement; Fancybox l'évalente, de sorte que la Lightbox est vraiment large et pas très grande, ce qui signifie que vous ne pouvez pas vraiment voir l'image du tout.

Ce que j'aimerais, c'est que l'image fait défiler horizontalement dans la LightBox. (Et non, je ne peux pas changer les images).

Des pensées?

Site Web FancyBox

Était-ce utile?

La solution

J'ai fini par pirater FancyBox et ajouter une autre option pour faire ce que je voulais. Voici l'essentiel:

if (opts.imgManSize) { 
   _set_content('<img alt="" id="fancy_img" src="'+imagePreloader.src+'" />',opts.imgWidth,imagePreloader.height+20);
} else {
   _set_content('<img alt="" id="fancy_img" src="'+imagePreloader.src+'" />',width,height);
}

...

if (opts.imgManSize) { 
  $("#fancy_content").css('overflow','auto');
}

...

if (opts.imgManSize) { 
  $('#fancy_img').css('width','auto');
}

...

$.fn.fancybox.defaults = {
   ...
   imgManSize:false,
   imgWidth:425,
   imgHeight:355,
   ...
}

Fonctionne comme un charme.

Autres conseils

Vous pouvez simplement ajuster la taille du cadre par rapport à la taille de l'image, en modifiant le CSS.

Pour écraser les déclarations de largeur et de hauteur que le plugin crée, ajouter:

#fancybox-inner {
    width: auto!important;
    height: auto!important;
}

#fancybox-wrap{
    width: auto!important;
    height: auto!important;
}

et enlever position:absolute sur #fancybox-inner

J'ai moi-même eu ce problème et j'ai écrit un code pour résoudre ce problème pour l'intégration des nouvelles vidéos Vimeo iframe'd basées sur un extrait existant que j'ai trouvé. Cela vous permettra d'ajouter des paramètres d'URL pour la largeur et la hauteur sur une base de fantaisie par FancyBox. Si vous ne les ajoutez pas, la valeur par défaut ouvrira un iframe d'une hauteur de 90% et 90%.

(function($){ 
    $(function(){
        // Fancybox: IFRAME
        var fancybox_iframe = $('.fancybox-iframe');
        if (fancybox_iframe.length > 0){
            fancybox_iframe.each(function(index){
                // Inline frame width param
                if( $(this).attr('href').match(/width=[0-9]+/i) ){
                    var fWidth = parseInt($(this).attr('href').match(/width=[0-9]+/i)[0].replace('width=',''));
                } else {
                    var fWidth = '90%';
                }
                // Inline frame height param
                if( $(this).attr('href').match(/height=[0-9]+/i) ){
                    var fHeight = parseInt($(this).attr('href').match(/height=[0-9]+/i)[0].replace('height=',''));
                } else {
                    var fHeight = '90%';
                }
                if(window.console&&window.console.log) { 
                    console.log('fWidth #'+index+': '+fWidth); 
                    console.log('fHeight #'+index+': '+fHeight); 
                }
                $(this).fancybox({
                    'titlePosition' : 'inside',
                    'type'              : 'iframe',
                    'autoScale'         : true,
                    'padding'           : '10',
                    'width'             : fWidth,
                    'height'                : fHeight,
                    'centerOnScroll'    : true
                });
            });
        }
    });
})(jQuery);

Pour l'utiliser, vous utiliseriez ce qui suit:

<a href="http://player.vimeo.com/video/16429685?color=ffffff&width=800&height=450" class="fancybox-iframe" title="Citizen Schools 101">Inline Vimeo Video</a>

J'espère que ça aide quelqu'un!

Enveloppez l'image dans un div (si son en ligne) ou dans une page si vous utilisez la charge Ajax. Ensuite, définissez le style sur la div sur la largeur de vos iframs et définissez l'attribut CSS de débordement à Overflow: Scroll;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top