3

私は fancybox に基づいてギャラリーを作成しています - 実際、私は必要なものを達成するためにフィールドに変更を加えました。私が見つけた最後の問題は、コードのこの部分にあります:

} else {
        fx.prop = 0;

        $(fx).animate({prop: 1}, {
            duration : currentOpts.changeSpeed,
            step : _draw,
            complete : finish_resizing
        });

Draw 関数がここにあるので、次のことがわかります。

_draw = function(pos) {
            var dim = {
                width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
                height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),

                top : parseInt(final_pos.top, 10),
                left : parseInt(final_pos.width, 10)
            };

            if (typeof final_pos.opacity !== 'undefined') {
                dim.opacity = pos < 0.8 ? 0.8 : pos;
            }

            wrap.css(dim);

            content.css({
                'width' : limit.width - currentOpts.padding * 2,
                'height' : limit.height - (titleHeight * pos) - currentOpts.padding * 2
            });
        },

私の質問は、 NEXTおよびPREV_drawの関数を変更する方法、またはアニメーション関数を設定する方法です。不透明度も無効にします。

「スクロール可能な」関数のようなものが必要です.. Fancybox のメイン画像 (このようなものhttp://jquerytools.org/demos/scrollable/ )

だから私はこれを成し遂げることができません..

ファンシーボックスのオプションから他の方法はありますか? 見つからないからです。

とにかく、これは元のファイルでした -
http://demo-store.prestashop.com/js/jquery/jquery.fancybox-1.3.4.js

これらは私が行った変更ですline 663:

_draw = function(pos) {
            var dim = {
                width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
                height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),

                top : parseInt(final_pos.top, 10),
                left : parseInt(final_pos.width, 10)
            };

            if (typeof final_pos.opacity !== 'undefined') {
                dim.opacity = pos < 0.8 ? 0.8 : pos;
            }

また、これも(ただし、これが影響しているとは思いません):

$('body').append(
        tmp = $('<div id="fancybox-tmp"></div>'),
        loading = $('<div id="fancybox-loading"><div></div></div>'),
        overlay = $('<div id="fancybox-overlay"></div>'),
        limit = $('<div id="limit"></div>')             
);

wraplimit = $('<div id="wraplimit"></div>').append( limit ).appendTo('body');           
thebox = $('<div id="thebox"></div>').append('<div id="comrigtt"></div>').appendTo( overlay )    
wrap = $('<div id="fancybox-wrap"></div>').append().appendTo( limit );

outer = $('<div id="fancybox-outer"></div>')
.append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
.appendTo( wrap );
4

1 に答える 1

0

メインのアニメーションとは異なる、次と前のカスタム アニメーションを追加したいようですね。http://fancybox.net/apiのドキュメントを確認し、次および前のコマンドを使用しましたか...

フィドルに投稿した効果が必要な場合は、次の厄介なハックをお勧めします (または、fancybox をドロップして、すぐにその効果をサポートするものを取得します)。

1)トリガーでfancyboxを有効にします2)jQueryなどを使用してdivにサムネイルを作成し、そのdivを作成したfancybox要素の下部(本文の下部)に追加します3)作成したサムネイルを接続して使用します次/前/固有などの既存の fancybox api。 4) js 自体に触れる必要がないようにします。

于 2013-06-05T00:21:51.970 に答える