È possibile disabilitare le barre di scorrimento verticali e orizzontali del browser utilizzando jQuery o javascript?
È possibile disabilitare le barre di scorrimento verticali e orizzontali del browser utilizzando jQuery o javascript?
Risposte:
Nel caso avessi bisogno della possibilità di nascondere e mostrare dinamicamente le barre di scorrimento, potresti usare
$("body").css("overflow", "hidden");
e
$("body").css("overflow", "auto");
da qualche parte nel tuo codice.
oveflow: hiddennon impedirà nulla sugli smartphone.
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
}
Finora abbiamo overflow: nascosto sul corpo. Tuttavia IE non sempre lo onora e devi mettere scroll = "no" anche sull'elemento body e / o posizionare overflow: nascosto anche sull'elemento html.
Puoi andare oltre quando hai bisogno di 'prendere il controllo' della porta di visualizzazione puoi farlo: -
<style>
body {width:100%; height:100%; overflow:hidden; margin:0; }
html {width:100%; height:100%; overflow:hidden; }
</style>
Un elemento a cui è stata assegnata un'altezza del 100% nel corpo ha l'intera altezza della finestra di visualizzazione e l'elemento posizionato in modo assoluto utilizzando il fondo: nnPX verrà impostato nn pixel sopra il bordo inferiore della finestra, ecc.
Nelle versioni moderne di IE (IE10 e versioni successive), le barre di scorrimento possono essere nascoste utilizzando la -ms-overflow-styleproprietà .
html {
-ms-overflow-style: none;
}
In Chrome, le barre di scorrimento possono avere uno stile:
::-webkit-scrollbar {
display: none;
}
Ciò è molto utile se si desidera utilizzare lo scorrimento del corpo "predefinito" in un'applicazione Web, che è notevolmente più veloce di overflow-y: scroll.
IE ha qualche bug con le barre di scorrimento. Quindi, se vuoi uno dei due, devi includere quanto segue per nascondere la barra di scorrimento orizzontale:
overflow-x: hidden;
overflow-y:scroll;
e per nascondere verticale:
overflow-y: hidden;
overflow-x: scroll;
(Non posso ancora commentare, ma volevo condividere questo):
Il codice di Lyncee ha funzionato per me nel browser desktop. Tuttavia, su iPad (Chrome, iOS 9), l'applicazione si è bloccata. Per aggiustarlo, ho cambiato
document.documentElement.style.overflow = ...
per
document.body.style.overflow = ...
che ha risolto il mio problema.
Utilizzando JQuery puoi disabilitare la barra di scorrimento con questo codice:
$('body').on({
'mousewheel': function(e) {
if (e.target.id == 'el') return;
e.preventDefault();
e.stopPropagation();
}
});
Inoltre puoi abilitarlo di nuovo con questo codice:
$('body').unbind('mousewheel');