2016-11-16 2 views
2

Я использую Featherlight как, лайтбоксы. Одна из проблем, с которой я столкнулся, - это открыть ее, фон остается прокручиваемым. Исправление, которое требуется большинству лайтбоксов, - это добавление класса к телу с помощью overflow:hidden;.Запретить прокрутку фона при открытии лайтбоксов

Как я могу это сделать при открытии лайтбокса, а затем удалить класс при закрытии?

+0

https://github.com/noelboss/featherlight/#configuration - это часть документации раскрывает все обратные вызовы, на которых вы можете связать для достижения этой цели ... –

+0

HTTP://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily, вы не хотите переполнять: скрытые, поскольку это скрывает полосы прокрутки и может вызвать перерисовку (которая медленная) –

ответ

2

Вы можете использовать опции вашего плагина вызова с помощью из beforeOpen и afterClose варианты, как:

$.featherlight({ 
    beforeOpen: function() { 
     document.body.style.overflow = 'hidden'; 
    }, 
    afterEnd: function() { 
     document.body.style.overflow = ''; 
    } 
}); 
+0

Это также скрывает полосы прокрутки и может вызвать перерисовку –

0

Вы можете попробовать следующие шаги:

1) Добавить новый класс CSS, как:

.bodyNoOverflow{ 
    overflow:hidden; 
} 

2) Измените конфигурацию инициализации виджета Featherlight и измените параметры beforeOpen и beforeClose функция обратного вызова, как:

beforeOpen: function(event){ 

    $("body").addClass("bodyNoOverflow"); 
    //existing code if any 
}, 

beforeClose: function(event){ 

    $("body").removeClass("bodyNoOverflow"); 
    //existing code if any 
}, 
+0

Это также скрывает полосы прокрутки и может вызвать перерисовку –