Je veux pouvoir faire défiler toute la page, mais sans que la barre de défilement soit affichée.
Dans Google Chrome, c'est:
::-webkit-scrollbar {
display: none;
}
Mais Mozilla Firefox et Internet Explorer ne semblent pas fonctionner comme ça.
J'ai aussi essayé ça en CSS:
overflow: hidden;
Cela masque la barre de défilement, mais je ne peux plus faire défiler.
Existe-t-il un moyen de supprimer la barre de défilement tout en pouvant faire défiler la page entière?
Avec juste CSS ou HTML, s'il vous plaît.
la source
!important
donc je les ai tous supprimésbox-sizing: border-box; width: calc(100% + 50px);
et la même valeur pour le rembourrage. Aucun navigateur n'a une largeur / hauteur de barre de défilement de 50 pixels, il devrait donc simplement les couvrir tous ...C'est facile dans WebKit, avec un style en option:
la source
cordova
application, a bien fonctionné. devait s'appliqueroverflow:scroll
à l'élément.-webkit-overflow-scrolling: touch
Cela fonctionne pour moi avec des propriétés CSS simples:
Pour les anciennes versions de Firefox, utilisez:
overflow: -moz-scrollbars-none;
la source
overflow: -moz-scrollbars-none
cache les barres de défilement dans Firebox mais désactive également le défilement. Pouvez-vous fournir une démonstration où cela fonctionne pour vous?-moz-scrollbars-none
propriété est supprimée pour les dernières versions de Firefox: developer.mozilla.org/en-US/docs/Web/CSS/overflow-webkit-overflow-scrolling: touch
-moz-scrollbars-none
vous pouvez utiliser@-moz-document url-prefix() { .container { overflow: hidden; } }
. Voir stackoverflow.com/questions/952861/… .MISE À JOUR:
Firefox prend désormais en charge le masquage des barres de défilement avec CSS, de sorte que tous les principaux navigateurs sont désormais couverts (Chrome, Firefox, Internet Explorer, Safari, etc.).
Appliquez simplement le CSS suivant à l'élément dont vous souhaitez supprimer les barres de défilement:
C'est la solution de navigateur croisé la moins hacky que je connaisse actuellement. Découvrez la démo.
RÉPONSE ORIGINALE:
Voici une autre façon qui n'a pas encore été mentionnée. C'est vraiment simple et n'implique que deux divs et CSS. Aucun JavaScript ou CSS propriétaire n'est nécessaire, et cela fonctionne dans tous les navigateurs. Il ne nécessite pas non plus de définir explicitement la largeur du conteneur, ce qui le rend fluide.
Cette méthode utilise une marge négative pour déplacer la barre de défilement hors du parent, puis la même quantité de remplissage pour ramener le contenu à sa position d'origine. La technique fonctionne pour le défilement vertical, horizontal et bidirectionnel.
Démos:
Exemple de code pour la version verticale:
HTML:
CSS:
la source
Utilisation:
C'est une astuce pour chevaucher quelque peu la barre de défilement avec un div qui se chevauche et qui n'a pas de barres de défilement:
C'est uniquement pour les navigateurs WebKit ... Ou vous pouvez utiliser du contenu CSS spécifique au navigateur (s'il y en a à l'avenir). Chaque navigateur peut avoir une propriété différente et spécifique pour ses barres respectives.
Pour utiliser Microsoft bord:
-ms-overflow-style: -ms-autohiding-scrollbar;
ou-ms-overflow-style: none;
comme par MSDN .Il n'y a pas d'équivalent pour Firefox. Bien qu'il existe un plugin jQuery pour y parvenir, http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html
la source
::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; }
// jQuery Mobile onMobileInit ()$.mobile.touchOverflowEnabled = true;
Cette réponse n'inclut pas le code, voici donc la solution de la page :
Selon la page, cette approche n'a pas besoin de connaître la largeur de la barre de défilement à l'avance pour fonctionner et la solution fonctionne également pour tous les navigateurs, et peut être vue ici .
La bonne chose est que vous n'êtes pas obligé d'utiliser des différences de remplissage ou de largeur pour masquer la barre de défilement.
C'est également un zoom sûr. Les solutions de rembourrage / largeur affichent la barre de défilement lors d'un zoom au minimum.
Correction de Firefox: http://jsbin.com/mugiqoveko/1/edit?output
la source
::-webkit-scrollbar {}
padding-right: 150px;
corrige. Testé dans FF, Chrome, Safari et Edge. Fonctionne également dans les bas niveaux de zoom en raison du grand rembourrage droit.html { -ms-overflow-style: none;}
. Dans ces navigateurs, il n'est pas nécessaire d'utiliser le padding-hack.overflow-y: scroll
obtenir un comportement de défilement mais caché (tout comme Chrome) pour le faire fonctionner sur Edge23.Utilisez simplement les trois lignes suivantes et votre problème sera résolu:
Où liaddshapes est le nom de la div où le défilement arrive.
la source
Cela fonctionne pour moi sur plusieurs navigateurs. Cependant, cela ne masque pas les barres de défilement natives sur les navigateurs mobiles.
Dans SCSS
En CSS
la source
{}
signifient les blocs imbriqués ( )? Comment faut-il l'interpréter? Et le&
? Peut-être élaborer dans votre réponse?&::-webkit-scrollbar
devient.hide-native-scrollbar::-webkit-scrollbar { }
en CSS{ width: 0; height: 0;}
pour :: - webkit-scrollbar au lieu dedisplay: none
pour iOS.Ce qui suit fonctionnait pour moi sur Microsoft, Chrome et Mozilla pour un élément div spécifique:
la source
scrollbar-width
(FF uniquement) est marqué comme "expérimental"HTML:
CSS:
Appliquez le CSS en conséquence.
Vérifiez-le ici (testé dans Internet Explorer et Firefox).
la source
Depuis le 11 décembre 2018 (Firefox 64 et supérieur), la réponse à cette question est en effet très simple car Firefox 64+ implémente désormais la spécification CSS Scrollbar Styling .
Utilisez simplement le CSS suivant:
Lien vers la note de publication de Firefox 64 ici .
la source
Utilisation:
CSS
HTML
la source
Utilisation
Appelez ces fonctions pour tout point que vous souhaitez charger, décharger ou recharger les barres de défilement. Il est toujours défilable dans Chrome comme je l'ai testé dans Chrome, mais je ne suis pas sûr des autres navigateurs.
la source
Cela fonctionne pour moi:
la source
Sur les navigateurs modernes, vous pouvez utiliser
wheel event
:la source
overflow: hidden
et ce code, pour quemat-card-content
(en angulaire 5, bien sûr) puisse défiler et cela a résolu mon problème. Remarque: je l'ai utilisée.deltaY
comme monstep
et cela fonctionnait comme un défilement normal, donc je pense que pour un défilement normal mais avec une barre de défilement cachée, c'est la meilleure correspondance.Mon problème: je ne veux aucun style dans mon contenu HTML. Je veux que mon corps défile directement sans barre de défilement, et seulement un défilement vertical, en travaillant avec des grilles CSS pour toutes les tailles d'écran.
Les solutions de remplissage ou de marge d'impact de valeur de dimensionnement de boîte , elles fonctionnent avec la taille de boîte: boîte de contenu .
J'ai toujours besoin de la directive "-moz-scrollbars-none", et comme gdoron et Mr_Green, j'ai dû cacher la barre de défilement. J'ai essayé
-moz-transform
et-moz-padding-start
, pour avoir un impact uniquement sur Firefox, mais il y avait des effets secondaires réactifs qui nécessitaient trop de travail.Cette solution fonctionne pour le contenu du corps HTML avec le style "display: grid", et elle est réactive.
la source
Ajouter un remplissage à un intérieur
div
, comme dans la réponse actuellement acceptée, ne fonctionnera pas si, pour une raison quelconque, vous souhaitez utiliserbox-model: border-box
.Ce qui fonctionne dans les deux cas, c'est d'augmenter la largeur de l'intérieur
div
à 100% plus la largeur de la barre de défilement (en supposant queoverflow: hidden
le div extérieur).Par exemple, en CSS:
En JavaScript, multi-navigateur:
la source
C'est ainsi que je le fais pour le défilement horizontal; uniquement CSS et fonctionne bien avec des frameworks comme Bootstrap / col- *. Il n'a besoin que de deux
div
s supplémentaires et du parent avec unwidth
ou unmax-width
ensemble:Vous pouvez sélectionner le texte pour le faire défiler ou le faire défiler avec les doigts si vous avez un écran tactile.
Version courte pour les paresseux:
la source
margin-bottom
pour êtrepadding-bottom
mais avec la même valeur. Cela ne mangera pas en dessous de l'espace pour l'élément en bas. Il empêche le chevauchement.margin-bottom
est négatif, je pense qu'il ne peut pas être changé en unpadding-bottom
, qui ne peut pas gérer les valeurs négativesLe style SASS suivant devrait rendre votre barre de défilement transparente sur la plupart des navigateurs (Firefox n'est pas pris en charge):
la source
Il se trouve que j'essaie les solutions ci-dessus dans mon projet et pour une raison quelconque, je n'ai pas pu masquer la barre de défilement en raison du positionnement div. Par conséquent, j'ai décidé de masquer la barre de défilement en introduisant un div qui la recouvre superficiellement. L'exemple ci-dessous concerne une barre de défilement horizontale:
Le CSS correspondant est le suivant:
la source
Ce sera au corps:
Et voici le CSS:
la source
Il s'agit d'une solution divite-esque qui devrait néanmoins fonctionner pour tous les navigateurs ...
Le balisage est le suivant et doit être à l'intérieur de quelque chose avec un positionnement relatif (et sa largeur doit être définie, par exemple 400 pixels):
Le CSS:
la source
le
perfect-scrollbar
plugin semble être le chemin à parcourir, voir: https://github.com/noraesae/perfect-scrollbarIl s'agit d'une solution JavaScript bien documentée et complète pour le problème des barres de défilement.
Page de démonstration: http://noraesae.github.io/perfect-scrollbar/
la source
Vous pouvez utiliser le code ci-dessous pour masquer la barre de défilement, mais tout en étant en mesure de faire défiler:
la source
Pour masquer les barres de défilement des éléments dont le contenu déborde, utilisez.
la source
Une autre sorte d'approche hacky consiste à faire
overflow-y: hidden
, puis à faire défiler manuellement l'élément avec quelque chose comme ceci:Il y a un excellent article sur la façon de détecter et de gérer les
onmousewheel
événements dans le blog de deepmikoto . Cela pourrait fonctionner pour vous, mais ce n'est définitivement pas une solution élégante.la source
Je voulais juste partager un extrait combiné pour masquer la barre de défilement que j'utilise lors du développement. Il s'agit d'une collection de plusieurs extraits trouvés sur Internet qui fonctionne pour moi:
la source
Un autre violon de travail simple :
Débordement masqué sur le conteneur parent et débordement automatique sur le conteneur enfant. Facile.
la source
Cette solution délicate fonctionne même sur l'ancien navigateur Web IE
C'est une solution de contournement à la [ barre de défilement verticale ]
Essayez-le: jsfiddle
la source
Réglez simplement la largeur de la largeur de l'enfant à 100%, le rembourrage à 15 pixels,
overflow-x
pour faire défiler etoverflow:hidden
pour le parent et quelle que soit la largeur que vous souhaitez.Il fonctionne parfaitement sur tous les principaux navigateurs, y compris Internet Explorer et Edge, à l'exception d'Internet Explorer 8 et des versions antérieures.
la source