15 votes

Comment empêcher le défilement de la page derrière fancybox-2

Nous utilisons fancybox2 pour afficher des images. Tout fonctionne bien, mais lorsque l'image plus grande est affichée dans la fancybox, la page derrière défile vers le haut. Après avoir fermé la fancybox, l'utilisateur doit de nouveau dérouler vers le bas jusqu'à la position où il a ouvert la boîte. Les exemples sur le site fancybox2 ne montrent pas ce comportement. Je n'ai pas pu trouver où se trouve la différence pour que cela se produise.

fancyOptions = {
  type: 'image',
  closeBtn: false,
  autoSize: false,
  scrolling: 'no',
  type: 'image',
  padding: [10,10,10,10],  
  beforeLoad: function(){
    this.title = getTitle(this);
    this.href = $(this.element).closest('a').attr('href');
  },
  helpers: {
    overlay: {
      css: {
        'background': 'rgba(0, 0, 0, 0.7)'
      },
    },
    title: {
      type: 'inside'
    }
  }
};

Nous utilisons fancybox2 comme un module au sein de require.js. L'appel .fancybox() est dans un bloc $(document).ready.

Il y avait 2 barres de défilement et j'en ai caché une avec du css

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

0voto

Vous pouvez essayer ceci :-

beforeShow: function(){
 $("body").css({'overflow-y':'hidden'});
},

afterClose: function(){
 $("body").css({'overflow-y':'visible'});

} 

Cela arrête le défilement vertical sur la page parent pendant que fancybox est ouvert.

0voto

Martin Filek Points 103

Dans jquery.fancybox.css -> .fancybox-lock
changement :
overflow: hidden !important;
à :
overflow: visible !important;
fonctionne pour moi :)

0voto

Maxim Smirnov Points 1

Mes modifications, cela m'aide

/* Fancybox */
$('.fancybox').fancybox({
    beforeShow: function(){
        $("body").css({
            "overflow-y": "hidden",
            "position": "fixed"
            }
        );
    },
    afterClose: function(){
        $("body").removeAttr("style");
    }
});

0voto

Alper Onur Points 1
$('.fancybox').fancybox({
 'beforeLoad': function(){
   disable_scroll();
    },
 'afterClose': function(){
   enable_scroll();
  }
});

var disabled_scroll = false;

function disable_scroll() {
  disabled_scroll = true;
}

function enable_scroll() {
  disabled_scroll = false;
}

dans fullPage.js

function scrollPage(element, callback, isMovementUp)
{
   if(disabled_scroll) return;
   .....
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X