1

www.edietty.com へのリクエストごとに特定のスライダーを追加しましたが、画像ごとに href を割り当てる変数が付属していません。私の最初の試みは、クリックして正確な URL に誘導することでしたが、href を追加しようとすると、スライダーが表示されなくなります。$('#main_image').attr('src','image1.jpg') を使ってデザインしようとしましたが、スライダー全体が表示されなくなったとき、故障して助けを求めることにしました。

スライダーは John Polacek からのものです http://johnpolacek.github.com/ResponsiveThumbnailGallery/

htmlは次のとおりです。

<article><div id="gallery"></div></article>

JQuery は次のとおりです。

(function($) {

    $.ThumbnailGallery = function(el, options) {

        var isUnderBreakpoint,
            currImageNumber,
            imagesPath,
            imageWidth,
            imageHeight,
            thumbWidth,
            thumbHeight,
            gallery,
            view,
            mainImage,
            nav,
            thumbnails,
            buttons;

        var defaults = {
            thumbImages: 'img/thumbs/thumb',
            smallImages: 'img/small/image',
            largeImages: 'img/large/image',
            count: 5,
            thumbImageType: 'jpg',
            breakpoint: 600,
            imageType: 'jpg',
            shadowStrength: 1
        }

        var plugin = this;
        plugin.settings = {}

        var init = function() {
            plugin.settings = $.extend({}, defaults, options);
            this.el = el;

            gallery = $(el).empty();

            view = $('<div id="gallery-view"></div>');
            view.css('margin','0 auto -1px');

            nav = $('<div id="gallery-nav"></div>');
            nav
                .css('margin','0 auto')
                .css('position','relative')
                .css('background-color','#222');

            thumbnails = $('<div id="nav-thumbnails"></div>');
            buttons = $('<div id="nav-buttons"></div>');
            buttons
                .css('position','absolute')
                .css('top','0');

            gallery.append(view, nav);
            nav.append(thumbnails, buttons);

            isUnderBreakpoint = $(window).width() < plugin.settings.breakpoint;
            imagesPath = isUnderBreakpoint ?
                plugin.settings.smallImages : plugin.settings.largeImages;

            updateMainImage(1);

            for (var i=0; i<plugin.settings.count; i++) {

                var button = $('<a href="#" class="gallery-button"></a>');
                button
                    .css('display','block')
                    .css('float','left');

                var thumbImage = $('<img class="thumbnail-image" src="'+(plugin.settings.thumbImages)+(i+1)+'.'+plugin.settings.thumbImageType+'" />');
                thumbImage
                    .css('display','block')
                    .css('float','left');

                if (i===0) {
                    thumbImage.load(function() {
                        thumbWidth = this.width;
                        thumbHeight = this.height;
                        $('.gallery-button')
                            .css('width',this.width)
                            .css('height',this.height);
                        nav.css('height',thumbHeight);
                        thumbnails.css('height',thumbHeight);
                        updateSize();
                    });
                } else {
                    button
                        .css('box-shadow','0px 4px 8px rgba(0,0,0,'+ plugin.settings.shadowStrength +') inset')
                        .css('background-color','rgba(0,0,0,'+ plugin.settings.shadowStrength/2 +')');
                }

                thumbnails.append(thumbImage);
                buttons.append(button);
            }           

            buttons.delegate('.gallery-button', 'click', function(e){
                e.preventDefault();
                $('.gallery-button')
                    .css('box-shadow','0px 4px 8px rgba(0,0,0,'+ plugin.settings.shadowStrength +') inset')
                    .css('background-color','rgba(0,0,0,'+ plugin.settings.shadowStrength/2 +')');
                $(this)
                    .css('box-shadow','none')
                    .css('background','none');

                updateMainImage($(this).index()+1);
            });

            $(window).resize(function(e) {

                updateSize();
            });
        }

        function updateMainImage(imageNumber) {
            currImageNumber = imageNumber;
            mainImage = $('<img src="'+imagesPath+imageNumber+'.'+plugin.settings.imageType+'" id="main-image" />');
            mainImage.load(function() {
                view.empty().append(mainImage);
                updateSize();
            });
            $("<img/>") // Make in memory copy of image to avoid css issues
                .attr("src", $(mainImage).attr("src"))
                .load(function() {
                    imageWidth = this.width;
                    imageHeight = this.height;
                });

        }

        function updateSize() {
            if (thumbWidth && imageWidth) {
                var galleryWidth = gallery.width();

                // check breakpoint
                if (isUnderBreakpoint != $(window).width() < plugin.settings.breakpoint) {
                    // update main image
                    isUnderBreakpoint = $(window).width() < plugin.settings.breakpoint;
                    imagesPath = isUnderBreakpoint ?
                        plugin.settings.smallImages : plugin.settings.largeImages;
                    updateMainImage(currImageNumber);
                }

                // set main image size
                if (galleryWidth < imageWidth) {
                    mainImage
                        .css('width', galleryWidth)
                        .css('height','');
                } else {
                    galleryWidth = imageWidth;
                    mainImage
                        .css('width',imageWidth)
                        .css('height','');
                }

                // calculate number of rows
                var numThumbs = plugin.settings.count;
                var thumbSize = galleryWidth / numThumbs;
                var numRows = 1;
                var thumbScale = thumbSize / thumbWidth;
                var imageScale = galleryWidth / imageWidth;

                // if thumb is below scale threshold, add new row
                while (thumbScale < .5) {
                    numRows++;
                    thumbSize = (galleryWidth * numRows) / numThumbs;
                    thumbScale = thumbSize / thumbWidth;
                }

                // set thumbnail sizes
                var thumbsRemainder = numThumbs;        // tracks thumbs left to scale
                var thumbIndex = 0;                   // tracks thumb index to be scaled
                for (var i=0; i<numRows; i++) {

                    var numThumbsInRow = Math.ceil(thumbsRemainder / (numRows-i));
                    // scale thumbs in row
                    for (var j=0; j<numThumbsInRow; j++) {
                        thumbScale = (galleryWidth / numThumbsInRow) / thumbWidth;
                        var newWidth = thumbWidth * thumbScale;
                        var newHeight = thumbHeight * thumbScale;
                        $('.thumbnail-image:eq('+thumbIndex+')')
                            .css('width',newWidth)
                            .css('height',newHeight);
                        $('.thumbnail-image:eq('+thumbIndex+') img')
                            .css('width',newWidth)
                            .css('height',newHeight);
                        $('.gallery-button:eq('+thumbIndex+')')
                            .css('width',newWidth)
                            .css('height',newHeight);
                        $('.gallery-button:eq('+thumbIndex+') img')
                            .css('width',newWidth)
                            .css('height',newHeight);
                        thumbIndex++;
                    }
                    thumbsRemainder -= numThumbsInRow;
                }

            }

            // update view size
            view.width(galleryWidth);
            view.height(mainImage.height());

            // update nav size
            nav.width(galleryWidth);
            nav.height(thumbHeight * thumbScale * numRows);            
        }

        init();

    }

})(jQuery);
4

1 に答える 1

0

このプラグインはthumbImagessmallImageslargeImagesパスを使用し、 から1までの数字countimageTypeまたはをthumbImageType追加します。設定を使用すると、次のサムパスが作成されます。

img/thumbs/thumb + count + .jpg:

img/thumbs/thumb1.jpg
img/thumbs/thumb2.jpg
img/thumbs/thumb3.jpg
img/thumbs/thumb4.jpg
img/thumbs/thumb5.jpg

および対応する小さいまたは大きい画像パス:

img/small/image1.jpg
img/large/image1.jpg

サムネイルと画像のパスを同様の設定にしたくない場合は、別の方法で動作するプラグインを使用したほうがよい場合があります。

于 2012-11-20T00:00:41.053 に答える