jQuery – Fancybox: Aber ich will keine Bildlaufleisten!

Lesezeit: 3 Minuten

Ich verwende jQuery Fancybox für ein Popup-Registrierungsformular hier

Ich möchte, dass das Formular eine Größe von 450 x 700 Pixel hat, aber egal, wie ich die Höhe und Breite einstelle, ich bekomme Bildlaufleisten:

<script type="text/javascript">
    $(document).ready(function() {
        $("a#regForm").fancybox({
            'titleShow'  : false,
            'autoscale' : true,
            'width'  : '450',
            'height'  : '700',
            'transitionIn'  : 'elastic',
            'transitionOut' : 'elastic'
            }); 
        });
    </script>

Irgendwas muss ich falsch machen aber ich komme nicht drauf was es ist. Ich würde mich hier über eine hilfreiche Hand freuen. Vielen Dank.

Ich hatte das gleiche Problem mit Fancybox und einem Iframe, habe nach einer Lösung gegoogelt und bin hier gelandet. Der Überlauf: versteckt hat bei mir nicht funktioniert, aber ich habe herausgefunden, dass man in Fancybox die Option für das Iframe-Scrollen festlegen kann (entspricht dem Setzen des Attributs „scrolling=no“ auf dem iframe), was das Problem in IE7 in einem mehr behebt anmutige Art:

$.fancybox({
    'type'        : 'iframe',
    'scrolling'   : 'no',
... and the rest of the parameters.

  • Dies funktionierte perfekt für mich. Ich sah Bildlaufleisten im IE, aber nicht in Chrome. Vielen Dank!

    – Rob Sobers

    9. Juni 2012 um 1:27 Uhr

Klingt etwas seltsam. Eine hässliche Lösung ist die Verwendung von CSS, overflow:hidden;

Immer wenn ich fancybox verwende, funktionieren die Bildlaufleisten korrekt. Sicher, dass der Inhalt der Fancybox keine andere Höhe einstellt?

Bearbeiten: Ihre Beispielseite angesehen. Anscheinend wird im Inhalt eine Breite eingestellt, die größer ist als die Fancybox selbst.

Ich habe ziemlich damit gekämpft, nur um die Antwort in der Fancybox-Dokumentation zu finden.

Wie oben angedeutet, dachte ich zuerst, es wäre so einfach gewesen, das Scrollen zu deaktivieren:

$('.fancybox').fancybox({'type': 'iframe', 'scrolling': 'no', 'width': 500})

Es reichte jedoch nicht aus, nur die Option „Scrollen“ auf „Nein“ zu setzen. Ich musste dasselbe in der Option „iframe“ wiederholen, etwa so:

$('.fancybox').fancybox({
  'type': 'iframe', 
  'scrolling': 'no', 
  'width': 500, 
  'iframe': {'scrolling': 'no'}
})

  • Das hat in Fancybox 1.3.0 funktioniert. Ich denke, die Antwort ändert sich durch die Versionsnummer.

    – mdikici

    5. November 2013 um 10:10 Uhr

  • Es scheint ein Lotteriespiel zu sein, welche Lösung funktioniert. Bei mir war es dieser. Ich habe das Gefühl, dass Bootstrap Teil des Problems war, aber das ist mir egal. Dies hat es behoben.

    – Ben Hillier

    21. Juni 2016 um 14:38 Uhr

Ich wollte nur sagen, dass die obige Antwort von Magnus es für mich getan hat, aber für das zweite “Overlay” muss das “Overflow” sein.

helpers : {
  overlay : {
    css : { 'overflow' : 'hidden' }
  }
}

nachdem Sie alle oben genannten Tipps getestet haben (und immer noch nutzlose Bildlaufleisten haben, die durch einige Inline overflow: scroll bei .fancybox-inner) und auch viele andere eigene Problemumgehungen ausprobiert habe, habe ich die Bildlaufleisten mit dieser Lösung losgeworden:

    afterShow: function(){
        this.inner.css({
            overflow: 'auto' // or 'no'
        });
    }

  • Dies ist das einzige, was es für mich getan hat.

    – Alasdair

    30. Mai 2013 um 16:40 Uhr

  • Dies! Mir gefällt auch, dass dadurch die Konfiguration innerhalb der Fancybox-Optionen bleibt und kein zusätzliches CSS erforderlich ist.

    – Michael Thessel

    14. Oktober 2015 um 0:23 Uhr

Benutzer-Avatar
Lukas Cousins

Ich habe das gleiche Problem und nach Zeiten von Versuch und Irrtum fand ich heraus, dass Sie Bildlaufleisten vermeiden können, indem Sie die Frame-CSS-Klasse überschreiben.

Sie können Folgendes tun:

iframe.fancybox-iframe {
    overflow:hidden;
}

JS-Konfiguration:

jQuery(document).ready(function(){
    $("a.various").fancybox({
        'width'             : 'auto',
        'height'            : 'auto',
        'autoScale'         : false,
        'autoDimensions'    : false,
        'scrolling'         : 'no',
        'transitionIn'      : 'none',
        'transitionOut'     : 'none',
        'type'              : 'iframe'  
    }); 
});

Hinweis: Ihr Fancybox-Boxtyp muss an sein iframe damit dies wirksam wird.

  • Dies ist das einzige, was es für mich getan hat.

    – Alasdair

    30. Mai 2013 um 16:40 Uhr

  • Dies! Mir gefällt auch, dass dadurch die Konfiguration innerhalb der Fancybox-Optionen bleibt und kein zusätzliches CSS erforderlich ist.

    – Michael Thessel

    14. Oktober 2015 um 0:23 Uhr

Benutzer-Avatar
Benutzer1157749

Ich hatte ein ähnliches Problem, bei dem vertikale Bildlaufleisten angezeigt wurden, wenn ich in den Fancybox-Optionen eine maxWidth festlegte.

Um das Problem zu umgehen musste ich einstellen

.fancybox-inner {
   overflow: hidden !important;
}

und legen Sie eine CSS-Regel mit fester Breite für den Fancybox-Inhalt fest, anstatt eine maxWidth in den Fancybox-Optionen anzugeben. Wenn ich Letzteres tat, war die berechnete Höhe von Fancybox für den Inhalt etwas zu klein – was wahrscheinlich darauf hindeutet, warum es überhaupt Bildlaufleisten eingefügt hat.

1130150cookie-checkjQuery – Fancybox: Aber ich will keine Bildlaufleisten!

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy