0

jbgallery3.0という画像スライダーを使用しています-jQueryを使用して実行しています。

これは通常の画像スライダーですが、ブラウザのサイズを検出し、画像をブラウザのサイズに拡大縮小する機能があります。iPadで表示すると、画像全体が表示されるように画像が小さくなります。

サイズ変更は、画像がスライダーに読み込まれるたびに行われるため、スライドの間にウィンドウのサイズを変更すると、次に画像が読み込まれるときに拡大縮小されます...ページを更新する必要はありません。

これはすべてサファリとクロームで正常に機能しますが、FirefoxとOpera(12.14)では機能せず、トリミングされたフルサイズの画像を提供するだけです...

ここで起こっていることのjsフィドルを作成しました-http ://jsfiddle.net/ktvvW/5/-「結果」パネルのサイズをクロムまたはサファリでサイズ変更して、何が起こっているのかを確認してください。

なぜこれがffやオペラで機能しないのか考えてみてください。

.

乾杯

4

4 に答える 4

3

jbgallery-3.0.js スクリプトで Webkit の動作を強制すると、問題が解決するようです。以下のオプションを参照してください。webkit を強制的に true にしています (userAgent は無視します)。FF と Opera の両方でこれをテストしましたが、機能は期待どおりで、画像は Chrome と同じズームで表示されます。

$(".jbgallery").jbgallery({  
    style    : "zoom",       //"centered"|"zoom"|"original" - image style  
    menu     : "simple",         //false|"numbers"|"simple"|"slider" - menu type  
    shortcuts: [37, 39],         //[prev,next] - keyboard code shortcuts  
    slideshow: true,            //true|false - autostart slideshow  
    fade     : true,             //true|false - disable all fade effects  
    popup    : false,            //true|false - modal box & traditional popup hack to display multiple gallery (3.0 : fullscreen:false)  
    randomize: 0,                //0|1|2 - randomize first image (1) or randomize "slideshow" (2) - blackout: http://www.grayhats.org  
    caption  : false,             //true|false - show/disable internal caption system  
    autohide : false,            //true|false - auto hide menu & caption  
    clickable: false,            //true|false - "image click & go"  
    current  : 1,                //number     - set initial photo (modal "hack" - see demo. don't use "hash". jbgallery use "location.hash" only in popup mode)  
//    webkit   : (navigator.userAgent.toLowerCase().search(/webkit/) != -1),  //boolean - used for specific browser hack. if you want, you can force disable this flag & try to find crossbrowser solution  
    webkit   : true,
    ie6      : (/MSIE 6/i.test(navigator.userAgent)), //boolean - IDEM  
    ie7      : (/MSIE 7/i.test(navigator.userAgent)), //boolean - IDEM  
    labels   : {                 //labels of internal menu  
        play : "play",  
        next : "next",  
        prev : "prev",  
        stop : "stop",  
        close: "close",  
        info : "info"  
    },  
    timers   : {                 //timers   
        fade    : 1000,           //fade duration  
        interval: 3000,          //slideshow interval  
        autohide: 7000           //autohide timeout  
    },  
    delays: {                    //delays (timers) to improve usability and reduce events  
        mousemove: 200,          //used by autohide. cancel autohide timeout every XXXms.   
        resize   : 10,          //used by ie6 to reduce events handled by window.resize  
        mouseover: 800           //used by tooltip. show tooltip only if the mouse STAY over thumb for XXXms  
    },  
    close    : function(){},     //callback handled by menu's button close. see demo. example : close : function(){window.close()}  
    before   : function(){},     //callback handled BEFORE image gallery loaded  
    after    : function(ev){},   //callback(ev) handled AFTER image gallery loaded. receive the native load event.  
    load     : function(ev){},   //callback(ev) handled AFTER native image load event. receive the native load event.  
    ready    : function(el){$('.jbg-menu').hide(); $('.jbg-loading').remove(); $('.jbg-caption').remove(); $('.jbg-menu-opacity').remove();},   //callback(el) handled AFTER jbgallery render. receive the HTML element.  
    fullscreen: false,            //true|false : the most important feature of jbgallery 3.0. now jbgallery can "stay in a box" and have multiple istance in one page.  
    push      : function(o){},   //callback handled by push public method (JBGALLERY API). receive the object/string/array of objects/array of strings passed from external. useful for external menu system  
    unshift   : function(o){},   //callback handled by unshift public method (JBGALLERY API). receive the object/string/array of objects/array of strings passed from external.  
    shift     : function(){},    //callback handled by shift public method   
    pop       : function(){},    //callback handled by pop public method   
    empty     : function(){}     //callback handled by empty public method   
});

ここに私のjsfiddleへのリンクがあります

于 2013-02-28T10:15:47.113 に答える
0

私はこれを行う方法を知っていると思います:

ロード関数を次のように変更します。

load     : function(ev){$(".zoom").css("width",$("#slider").width()),$(".zoom").css("height","auto");$(".zoom").css("left","0px");$(".zoom").css("top","auto")},

すべてのブラウザで動作し、テストされ、正常に動作します

于 2013-02-28T19:38:05.980 に答える
0

これについて完全な答えはありませんが、過去に同様の問題がありました。Gecko (Firefox) と Webkit (Safari および Chrome) は画像を同じ方法で処理しないことを知りました。拡大縮小しようとしたときに画像のサイズの情報が得られなかったため、同じコードで拡大縮小することはできませんでした。

image + onload イベントについて調査することしか提案できません。これは、私の観点ではJavaScriptの問題です。

于 2013-03-06T00:54:42.647 に答える
0

問題はCSSのようです。

オリジナル

.jbgallery .jbgallery-target.zoom {
    min-height: 50%;
    min-width: 50%;
}

変更された

.jbgallery .jbgallery-target.zoom {
    height: 50%;
    width: 50%;
}

オリジナルはプラグインcssにあったため、css パネルに css を追加する必要がありました。

ここに新しいCSSのリンクがあります http://jsfiddle.net/ktvvW/8/

于 2013-02-25T22:01:12.543 に答える