Hack de CSS para, por exemplo, Modais, Lightboxes ou menus deslizantes fixos que ultrapassam o tamanho da tela e não são roláveis devido à posição fixa e um elemento de corpo agressivo.
Adicione o ‘.noscroll’ ao corpo dinamicamente através de Javascript e você está pronto para ir. Este exemplo mostra a solução para o componente modal Bootstrap – convertendo-o em um elemento de tamanho completo
Isso pode ser usado com qualquer elemento fixo que você gostaria de tornar rolável (ou seja, menus grandes em dispositivos pequenos):
# Javascript
$('modal').on('show', function() { $('body').addClass('noscroll') })
$('modal').on('hide', function() { $('body').removeClass('noscroll') })
# CSS
body.noscroll { overflow: hidden; }
.modal {
position: absolute;
/* You can, of course, tweak this to position your element */
top: 0; bottom: 0; left: 0; right: 0;
overflow-y: scroll;
}
Solução 2
Você também pode chamar o seguinte script e evitar a rolagem em dispositivos de toque, exceto em elementos dom com a classe “.scrollable”.
# Javascript
$('body').on 'touchmove', (e) ->
e.preventDefault() unless $('.scrollable').has($(e.target)).length