3

私は自分のページで FancyBox を使用していますが、ときどき (常にではありません)、ライトボックスがページの奥まで開きすぎて、下部が切れてしまい、下にスクロールして残りの部分を表示する必要があります。通常、ページの真ん中に配置されます。

メソッドを呼び出すときにその位置をfixedに設定してますが、ほとんどの場合、想定どおりに中央で開きます。そのため、何が原因で外れるのかわかりませんが、たまにしかありません。onStart

サイトはRaditaz.comです。既存のステーションを再生して (または独自のステーションを作成します。アカウントは必要ありません)、中央のアルバム アートをクリックしてライトボックスを開きます。

これに関するリードをいただければ幸いです-ありがとう!

編集:いくつかの更新...

  • FancyBox を開いた後にウィンドウのサイズを変更すると、ウィンドウは中央に正しく再配置されます (ただし、ウィンドウを閉じて再度開くまでの間のみ、その時点でウィンドウが再び低くなりすぎます)
  • WebKit ブラウザー (Safari および Chrome) で最も頻繁に位置の誤りが発生するようです。

編集 2: 私たちが使用している Fancybox のバージョンは 1.3.4 であり、新しい 2.0 ではありません。jQuery のバージョンは 1.6.4 です。Fancybox 2.0 を使用すると問題が解決する可能性がありますが、それには jQuery 1.7 が必要であり、これは使用している他のプラグインの一部と互換性がありません。したがって、Fancybox 1.3.4 で動作する修正を希望します。

4

2 に答える 2

6

私はあなたのウェブページにアクセスし、バグを見つけたら問題を繰り返し再現することができました。それはFirefoxを使用していました。

まず、この問題の参照写真を次に示します。 ここに画像の説明を入力してください

上の画像では、Fancyboxがブラウザの中央に配置されておらず、アーティストの写真の上部が、使用しているTotemTickerプラグインのすぐ下にあることに注意してください。

次の参照写真は、トーテムティッカーがオブジェクトをオーバーレイしていることを示す赤い枠で囲まれたセクションのクローズアップです。
ここに画像の説明を入力してください

これらの2つの問題は関連しています。FancyBoxの開きがページの問題で低すぎる場合は、数曲前に再生された中央の大きな画像の横にあるミニアーティスト画像をクリックする必要があります。トーテムティッカープラグインはアニメーション処理中です。

これらの参照画像は、タイミングが適切な場合に何が起こるかを示しています。タイミングが正しくない場合、またはスライダーがまだクリアされていないキャッシュ内の画像を使用している場合は、再試行する必要があります。通常、トーテムティッカーが他のオブジェクトと重なっているのがわかります。

バグが見つかったので、これを解決するための実用的なソリューションを次に示します。Fancyboxプラグインのコールバックを使用して、Fancyboxがアニメーション化しようとしているときにトーテムティッカーをオフにし、Fancyboxが閉じたときにトーテムティッカーをオンに戻します。

Totem TickerにはインターフェースするAPIがないため、アンカーボタンを介して開始オプションと停止オプションを使用するには、そのプラグインで概説されているプロセスを使用する必要があります。良いニュースは、テキストリンクを関連付ける必要がないため、表示されないことです。確認するコードは次のとおりです。

jQuery Totem Ticker jQuery Before:

    $('#trending ul').totemticker({
        direction: 'up',
        interval: 5000,
        mousestop: true,
        row_height: '74px'
    });


jQuery Totem Ticker jQuery After:

    $('#trending ul').totemticker({
        direction: 'up',
        interval: 5000,
        mousestop: true,
        row_height: '74px',
        start: '#totemStart',
        stop: '#totemStop'
    });



jQuery Totem Ticker HTML Before:

        <div id="trending" class="column aside">
            <div class="section title"><span>Top Trending Stations</span></div>
            <div class="fadeout"></div>
            <ul></ul>
        </div>


jQuery Totem Ticker HTML After:

        <div id="trending" class="column aside">
            <div class="section title"><span>Top Trending Stations</span></div>
            <div class="fadeout"></div>
            <ul></ul>
            <a id="totemStart" href="#"></a>
            <a id="totemStop" href="#"></a>
        </div>





Imported raditaz.min.build File Before:

    $("#album-art-anchor").fancybox({
        scrolling: "auto",
        autoscale: true,
        autoDimensions: true,
        width: 455,
        height: 495,
        titlePosition: "outside",
        onStart: function () {
            $("#fancybox-overlay").css({
                position: "fixed",
                overflow: "scroll"
            });
        },
        onClosed: onTrackLightboxClosed
    });


Imported raditaz.min.build File After:

    $("#album-art-anchor").fancybox({
        scrolling: "auto",
        autoscale: true,
        autoDimensions: true,
        width: 455,
        height: 495,
        titlePosition: "outside",
        onStart: function () {
            $("#fancybox-overlay").css({
                position: "fixed",
                overflow: "scroll"
            });
        },
        onClosed: onTrackLightboxClosed,

        // Below is added above is original.
        //
        beforeShow: function(){
            $('#totemStop').click();
        },
        afterClose: function(){
            $('#totemStart').click();
        },
        onComplete: function(){
           $.fancybox.center;
        }
    });

コンテンツが表示されたonComplete直後に起動し、関数はFancybox APIを使用してコンテンツをビューポートの中央に配置します...しかし、これは、原因となる問題を処理しているため、現在は必要ありません。私は自分の側で失敗した状態を再現できないので、確かにそれを含めましたが、この答えがあなたの問題に対処するのに役立つことを確認するために、2つのプラグインが一緒にテストされました。

確かに、いつでも$.fancybox.centerを実行できます。Fancyboxが安定した後に起動するようにsetTimeoutで:

setTimeout("$.fancybox.center;", 1000);


onStartを使用するとoverflow: "scroll"、Chromeの右側に空の垂直バーが表示されます。

ちなみに、このサイトは開発中であるため、Firefoxプラグインを備えたFirefoxの他に、Firefox用のHTMLバリデータープラグインを使用しました。ソースhtmlページを表示するときのエラーを強調表示し、解決策を提供します。たとえば、ホームページの389行目は閉じられていないクラス名です。587/589行目にはIDが重複しています。プラグインが独自のタグをマークアップに挿入する場合など、一部のエラーはエラーではありません。

編集:最近のSO質問編集:使用しているjQueryv1.6.4と互換性のあるv2.0にFancyboxを更新してください。Fancybox v2.0のソースファイルには、jQueryv1.6.0が最低限必要なバージョンであると記載されています。

不明な点がありましたらお知らせください。別の方法で説明させていただきます。ありがとう。

于 2012-05-31T10:04:44.270 に答える
0

サイトも見れません。しかし、おそらくすべての fancbox のものを削除し、再度ダウンロードしてインストールすることができます。これにより、fancybox にある問題が取り除かれます。

それ以外の場合は、fancybox をターゲットにすることを意図していないコードがあるかどうかを確認してください。

しかし、まず最初に、新しい jquery にアップグレードしてください。現在、1.6 を使用しています。1.7.2 が利用可能になりました。彼らは新しいもののいくつかのバグを修正しました。

于 2012-05-31T09:44:34.217 に答える