Est-il possible de désactiver les barres de défilement verticales et horizontales des navigateurs en utilisant jQuery ou javascript?
Est-il possible de désactiver les barres de défilement verticales et horizontales des navigateurs en utilisant jQuery ou javascript?
Réponses:
Si vous avez besoin de la possibilité de masquer et d'afficher les barres de défilement dynamiquement, vous pouvez utiliser
$("body").css("overflow", "hidden");
et
$("body").css("overflow", "auto");
quelque part dans votre code.
oveflow: hidden
n'empêchera rien sur les 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
}
Jusqu'à présent, nous avons un débordement: caché sur le corps. Cependant, IE ne respecte pas toujours cela et vous devez également mettre scroll = "no" sur l'élément body et / ou placer overflow: hidden sur l'élément html également.
Vous pouvez aller plus loin lorsque vous avez besoin de `` prendre le contrôle '' du port de vue, vous pouvez le faire: -
<style>
body {width:100%; height:100%; overflow:hidden; margin:0; }
html {width:100%; height:100%; overflow:hidden; }
</style>
Un élément à hauteur de 100% dans le corps a la hauteur totale de la fenêtre de la fenêtre, et l'élément positionné de manière absolue en utilisant le bas: nnPX sera défini nn pixels au-dessus du bord inférieur de la fenêtre, etc.
Dans les versions modernes d'IE (IE10 et supérieur), les barres de défilement peuvent être masquées à l'aide de la -ms-overflow-style
propriété .
html {
-ms-overflow-style: none;
}
Dans Chrome, les barres de défilement peuvent être stylisées:
::-webkit-scrollbar {
display: none;
}
Ceci est très utile si vous souhaitez utiliser le défilement corporel «par défaut» dans une application Web, qui est considérablement plus rapide que overflow-y: scroll
.
IE a un bug avec les barres de défilement. Donc, si vous voulez l'un des deux, vous devez inclure les éléments suivants pour masquer la barre de défilement horizontale:
overflow-x: hidden;
overflow-y:scroll;
et pour cacher vertical:
overflow-y: hidden;
overflow-x: scroll;
(Je ne peux pas encore commenter, mais je voulais partager ceci):
Le code de Lyncee a fonctionné pour moi dans le navigateur de bureau. Cependant, sur iPad (Chrome, iOS 9), l'application a planté. Pour le réparer, j'ai changé
document.documentElement.style.overflow = ...
à
document.body.style.overflow = ...
qui a résolu mon problème.
En utilisant JQuery, vous pouvez désactiver la barre de défilement avec ce code:
$('body').on({
'mousewheel': function(e) {
if (e.target.id == 'el') return;
e.preventDefault();
e.stopPropagation();
}
});
Vous pouvez également l'activer à nouveau avec ce code:
$('body').unbind('mousewheel');