É possível desabilitar as barras de rolagem vertical e horizontal do navegador usando jQuery ou javascript?
É possível desabilitar as barras de rolagem vertical e horizontal do navegador usando jQuery ou javascript?
Respostas:
No caso de você precisar da possibilidade de ocultar e mostrar as barras de rolagem dinamicamente, você pode usar
$("body").css("overflow", "hidden");
e
$("body").css("overflow", "auto");
em algum lugar do seu código.
oveflow: hidden
não impedirá nada em smartphones.
function reloadScrollBars() {
document.documentElement.style.overflow = 'auto'; // firefox, chrome
document.body.scroll = "yes"; // ie only
}
function unloadScrollBars() {
document.documentElement.style.overflow = 'hidden'; // firefox, chrome
document.body.scroll = "no"; // ie only
}
Até agora temos overflow: escondido no corpo. No entanto, o IE nem sempre honra isso e você precisa colocar scroll = "no" no elemento body e / ou colocar overflow: hidden no elemento html também.
Você pode levar isso adiante quando precisar 'assumir o controle' da porta de visualização, você pode fazer o seguinte: -
<style>
body {width:100%; height:100%; overflow:hidden; margin:0; }
html {width:100%; height:100%; overflow:hidden; }
</style>
Um elemento com altura de 100% no corpo tem a altura total da janela de visualização e o elemento posicionado absolutamente usando bottom: nnPX será definido nn pixels acima da borda inferior da janela, etc.
Em versões modernas do IE (IE10 e superior), as barras de rolagem podem ser ocultadas usando a -ms-overflow-style
propriedade .
html {
-ms-overflow-style: none;
}
No Chrome, as barras de rolagem podem ser estilizadas:
::-webkit-scrollbar {
display: none;
}
Isso é muito útil se você quiser usar a rolagem do corpo 'padrão' em um aplicativo da web, que é consideravelmente mais rápido do que overflow-y: scroll
.
O IE tem algum bug com as barras de rolagem. Portanto, se você quiser um dos dois, deve incluir o seguinte para ocultar a barra de rolagem horizontal:
overflow-x: hidden;
overflow-y:scroll;
e para ocultar vertical:
overflow-y: hidden;
overflow-x: scroll;
(Ainda não posso comentar, mas gostaria de compartilhar):
O código de Lyncee funcionou para mim no navegador de desktop. No entanto, no iPad (Chrome, iOS 9), travou o aplicativo. Para consertar, mudei
document.documentElement.style.overflow = ...
para
document.body.style.overflow = ...
que resolveu meu problema.
Usando JQuery, você pode desativar a barra de rolagem com este código:
$('body').on({
'mousewheel': function(e) {
if (e.target.id == 'el') return;
e.preventDefault();
e.stopPropagation();
}
});
Além disso, você pode habilitá-lo novamente com este código:
$('body').unbind('mousewheel');