0 votes

galerie d'images avec option de diaporama

Bonjour à tous, je suis nouveau en PHP, je cherche une galerie d'images avec diaporama mix script avec volet de prévisualisation, comme :


(thumb 1) (thumb 2) (thumb 3)
(thumb 4) (thumb 4) (thumb 5) etc. 

...où en cliquant sur un pouce l'image principale apparaîtra, mais je n'ai que les options suivant, précédent, fermer dans l'image principale, j'ai besoin de l'option diaporama aussi, quelqu'un peut-il m'aider dans ce domaine ?

Quelqu'un a un script comme celui-ci à recommander ? Quelqu'un peut-il m'aider dans dis merci à l'avance. Voici mon fichier .js

(function($) {
var opts = {}, 
    imgPreloader = new Image, imgTypes = ['png', 'jpg', 'jpeg', 'gif'], 
    loadingTimer, loadingFrame = 1;

$.fn.fancybox = function(settings) { opts.settings = $.extend({}, $.fn.fancybox.defaults, settings) ;

    $.fn.fancybox.init();

    return this.each(function() {
        var $this = $(this);
        var o = $.metadata ? $.extend({}, opts.settings, $this.metadata()) : opts.settings;

        $this.unbind('click').click(function() {
            $.fn.fancybox.start(this, o); return false;
        });
    });
};

$.fn.fancybox.start = function(el, o) {
    if (opts.animating) return false;

    if (o.overlayShow) {
        $("#fancy_wrap").prepend('<div id="fancy_overlay"></div>');
        $("#fancy_overlay").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': o.overlayOpacity});

        if ($.browser.msie) {
            $("#fancy_wrap").prepend('<iframe id="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
            $("#fancy_bigIframe").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': 0});
        }

        $("#fancy_overlay").click($.fn.fancybox.close);
    }

    opts.itemArray  = [];
    opts.itemNum    = 0;

    if (jQuery.isFunction(o.itemLoadCallback)) {
       o.itemLoadCallback.apply(this, [opts]);

        var c   = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
        var tmp = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}

       for (var i = 0; i < opts.itemArray.length; i++) {
            opts.itemArray[i].o = $.extend({}, o, opts.itemArray[i].o);

            if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
                opts.itemArray[i].orig = tmp;
            }
       }

    } else {
        if (!el.rel || el.rel == '') {
            var item = {url: el.href, title: el.title, o: o};

            if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
                var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
                item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
            }

            opts.itemArray.push(item);

        } else {
            var arr = $("a[@rel=" + el.rel + "]").get();

            for (var i = 0; i < arr.length; i++) {
                var tmp     = $.metadata ? $.extend({}, o, $(arr[i]).metadata()) : o;
                var item    = {url: arr[i].href, title: arr[i].title, o: tmp};

                if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
                    var c = $(arr[i]).children("img:first").length ? $(arr[i]).children("img:first") : $(el);

                    item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
                }

                if (arr[i].href == el.href) opts.itemNum = i;

                opts.itemArray.push(item);
            }
        }
    }

    $.fn.fancybox.changeItem(opts.itemNum);
};

$.fn.fancybox.changeItem = function(n) {
    $.fn.fancybox.showLoading();

    opts.itemNum = n;

    $("#fancy_nav").empty();
    $("#fancy_outer").stop();
    $("#fancy_title").hide();
    $(document).unbind("keydown");

    imgRegExp = imgTypes.join('|');
    imgRegExp = new RegExp('\.' + imgRegExp + '$', 'i');

    var url = opts.itemArray[n].url;

    if (url.match(/#/)) {
        var target = window.location.href.split('#')[0]; target = url.replace(target,'');

        $.fn.fancybox.showItem('<div id="fancy_div">' + $(target).html() + '</div>');

        $("#fancy_loading").hide();

    } else if (url.match(imgRegExp)) {
        $(imgPreloader).unbind('load').bind('load', function() {
            $("#fancy_loading").hide();

            opts.itemArray[n].o.frameWidth  = imgPreloader.width;
            opts.itemArray[n].o.frameHeight = imgPreloader.height;

            $.fn.fancybox.showItem('<img id="fancy_img" src="' + imgPreloader.src + '" />');

        }).attr('src', url + '?rand=' + Math.floor(Math.random() * 999999999) );

    } else {
        $.fn.fancybox.showItem('<iframe id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + url + '"></iframe>');
    }
};

$.fn.fancybox.showIframe = function() {
    $("#fancy_loading").hide();
    $("#fancy_frame").show();
};

$.fn.fancybox.showItem = function(val) {
    $.fn.fancybox.preloadNeighborImages();

    var viewportPos = $.fn.fancybox.getViewport();
    var itemSize    = $.fn.fancybox.getMaxSize(viewportPos[0] - 50, viewportPos[1] - 100, opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight);

    var itemLeft    = viewportPos[2] + Math.round((viewportPos[0] - itemSize[0]) / 2) - 20;
    var itemTop     = viewportPos[3] + Math.round((viewportPos[1] - itemSize[1]) / 2) - 40;

    var itemOpts = {
        'left':     itemLeft, 
        'top':      itemTop, 
        'width':    itemSize[0] + 'px', 
        'height':   itemSize[1] + 'px'  
    }

    if (opts.active) {
        $('#fancy_content').fadeOut("normal", function() {
            $("#fancy_content").empty();

            $("#fancy_outer").animate(itemOpts, "normal", function() {
                $("#fancy_content").append($(val)).fadeIn("normal");
                $.fn.fancybox.updateDetails();
            });
        });

    } else {
        opts.active = true;

        $("#fancy_content").empty();

        if ($("#fancy_content").is(":animated")) {
            console.info('animated!');
        }

        if (opts.itemArray[opts.itemNum].o.zoomSpeedIn > 0) {
            opts.animating      = true;
            itemOpts.opacity    = "show";

            $("#fancy_outer").css({
                'top':      opts.itemArray[opts.itemNum].orig.pos.top - 18,
                'left':     opts.itemArray[opts.itemNum].orig.pos.left - 18,
                'height':   opts.itemArray[opts.itemNum].orig.height,
                'width':    opts.itemArray[opts.itemNum].orig.width
            });

            $("#fancy_content").append($(val)).show();

            $("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedIn, function() {
                opts.animating = false;
                $.fn.fancybox.updateDetails();
            });

        } else {
            $("#fancy_content").append($(val)).show();
            $("#fancy_outer").css(itemOpts).show();
            $.fn.fancybox.updateDetails();
        }
     }
};

$.fn.fancybox.updateDetails = function() {
    $("#fancy_bg,#fancy_close").show();

    if (opts.itemArray[opts.itemNum].title !== undefined && opts.itemArray[opts.itemNum].title !== '') {
        $('#fancy_title div').html(opts.itemArray[opts.itemNum].title);
        $('#fancy_title').show();
    }

    if (opts.itemArray[opts.itemNum].o.hideOnContentClick) {
        $("#fancy_content").click($.fn.fancybox.close);
    } else {
        $("#fancy_content").unbind('click');
    }

    if (opts.itemNum != 0) {
        $("#fancy_nav").append('<a id="fancy_left" href="javascript:;"></a>');

        $('#fancy_left').click(function() {
            $.fn.fancybox.changeItem(opts.itemNum - 1); return false;
        });
    }

    if (opts.itemNum != (opts.itemArray.length - 1)) {
        $("#fancy_nav").append('<a id="fancy_right" href="javascript:;"></a>');

        $('#fancy_right').click(function(){
            $.fn.fancybox.changeItem(opts.itemNum + 1); return false;
        });
    }

    $(document).keydown(function(event) {
        if (event.keyCode == 27) {
            $.fn.fancybox.close();

        } else if(event.keyCode == 37 && opts.itemNum != 0) {
            $.fn.fancybox.changeItem(opts.itemNum - 1);

        } else if(event.keyCode == 39 && opts.itemNum != (opts.itemArray.length - 1)) {
            $.fn.fancybox.changeItem(opts.itemNum + 1);
        }
    });
};

$.fn.fancybox.preloadNeighborImages = function() {
    if ((opts.itemArray.length - 1) > opts.itemNum) {
        preloadNextImage = new Image();
        preloadNextImage.src = opts.itemArray[opts.itemNum + 1].url;
    }

    if (opts.itemNum > 0) {
        preloadPrevImage = new Image();
        preloadPrevImage.src = opts.itemArray[opts.itemNum - 1].url;
    }
};

$.fn.fancybox.close = function() {
    if (opts.animating) return false;

    $(imgPreloader).unbind('load');
    $(document).unbind("keydown");

    $("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();

    $("#fancy_nav").empty();

    opts.active = false;

    if (opts.itemArray[opts.itemNum].o.zoomSpeedOut > 0) {
        var itemOpts = {
            'top':      opts.itemArray[opts.itemNum].orig.pos.top - 18,
            'left':     opts.itemArray[opts.itemNum].orig.pos.left - 18,
            'height':   opts.itemArray[opts.itemNum].orig.height,
            'width':    opts.itemArray[opts.itemNum].orig.width,
            'opacity':  'hide'
        };

        opts.animating = true;

        $("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedOut, function() {
            $("#fancy_content").hide().empty();
            $("#fancy_overlay,#fancy_bigIframe").remove();
            opts.animating = false;
        });

    } else {
        $("#fancy_outer").hide();
        $("#fancy_content").hide().empty();
        $("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
    }
};

$.fn.fancybox.showLoading = function() {
    clearInterval(loadingTimer);

    var pos = $.fn.fancybox.getViewport();

    $("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
    $("#fancy_loading").bind('click', $.fn.fancybox.close);

    loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
};

$.fn.fancybox.animateLoading = function(el, o) {
    if (!$("#fancy_loading").is(':visible')){
        clearInterval(loadingTimer);
        return;
    }

    $("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');

    loadingFrame = (loadingFrame + 1) % 12;
};

$.fn.fancybox.init = function() {
    if (!$('#fancy_wrap').length) {
        $('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_close"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
        $('<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>').prependTo("#fancy_inner");

        $('<table cellspacing="0" cellpadding="0" border="0"><tr><td id="fancy_title_left"></td><td id="fancy_title_main"><div></div></td><td id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');
    }

    if ($.browser.msie) {
        $("#fancy_inner").prepend('<iframe id="fancy_freeIframe" scrolling="no" frameborder="0"></iframe>');
    }

    if (jQuery.fn.pngFix) $(document).pngFix();

    $("#fancy_close").click($.fn.fancybox.close);
};

$.fn.fancybox.getPosition = function(el) {
    var pos = el.offset();

    pos.top += $.fn.fancybox.num(el, 'paddingTop');
    pos.top += $.fn.fancybox.num(el, 'borderTopWidth');

    pos.left += $.fn.fancybox.num(el, 'paddingLeft');
    pos.left += $.fn.fancybox.num(el, 'borderLeftWidth');

    return pos;
};

$.fn.fancybox.num = function (el, prop) {
    return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};

$.fn.fancybox.getPageScroll = function() {
    var xScroll, yScroll;

    if (self.pageYOffset) {
        yScroll = self.pageYOffset;
        xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        yScroll = document.documentElement.scrollTop;
        xScroll = document.documentElement.scrollLeft;
    } else if (document.body) {
        yScroll = document.body.scrollTop;
        xScroll = document.body.scrollLeft; 
    }

    return [xScroll, yScroll]; 
};

$.fn.fancybox.getViewport = function() {
    var scroll = $.fn.fancybox.getPageScroll();

    return [$(window).width(), $(window).height(), scroll[0], scroll[1]];
};

$.fn.fancybox.getMaxSize = function(maxWidth, maxHeight, imageWidth, imageHeight) {
    var r = Math.min(Math.min(maxWidth, imageWidth) / imageWidth, Math.min(maxHeight, imageHeight) / imageHeight);

    return [Math.round(r * imageWidth), Math.round(r * imageHeight)];
};

$.fn.fancybox.defaults = {
    hideOnContentClick: false,
    zoomSpeedIn:        500,
    zoomSpeedOut:       500,
    frameWidth:         600,
    frameHeight:        400,
    overlayShow:        false,
    overlayOpacity:     0.4,
    itemLoadCallback:   null
};

})(jQuery) ;

1voto

Jon Winstanley Points 11280

La galerie d'images dont vous parlez est en fait un script côté client et construit en JavaScript. Elle n'est pas affectée par le langage de serveur sous-jacent que vous utilisez, en l'occurrence PHP.

Il existe des centaines de galeries d'images JavaScript différentes. Essayez cet article pour un point de départ : 35 plugins jQuery utiles pour les diaporamas, les graphiques et les effets de texte

D'après mes connaissances, la meilleure galerie JavaScript est construite au-dessus de jQuery et s'appelle Colorbox

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X