Rendre la barre de défilement principale toujours visible

Quel CSS est requis pour que la barre de défilement verticale du navigateur reste visible lorsqu'un utilisateur visite une page web (lorsque la page n'a pas assez de contenu pour déclencher l'activation de la barre de défilement)?

152
demandé sur Dave Jarvis 2009-07-29 23:12:33

10 réponses

html {
    overflow: -moz-scrollbars-vertical; 
    overflow-y: scroll;
}

Cela rend la barre de défilement toujours visible et active uniquement en cas de besoin.

Mise à jour: si ce qui précède ne fonctionne pas, utilisez simplement ce mai.

html {
    overflow-y:scroll;
}
285
répondu Corv1nus 2016-09-26 21:31:37
html {
    overflow-y: scroll;
}

C'est ce que tu veux?

Malheureusement, Opera 9.64 semble ignorer cette déclaration CSS lorsqu'elle est appliquée à HTML ou BODY, bien que cela fonctionne pour d'autres éléments de niveau bloc comme DIV.

23
répondu Ionuț G. Stan 2016-09-26 21:32:05

Les choses ont changé ces dernières années. Les réponses ci-dessus ne sont plus valables dans tous les cas. Apple poussedisparaître barres de défilement partout. Safari, Chrome et même Firefox sur MacOs (et iOs) n'affichent que les barres de défilement lors du défilement - Je ne connais pas Windows/IE actuel. Cependant, il existe des moyens non standard de styliser barres de défilement sur Webkit (c'est-à-dire abandonné il y a longtemps).

18
répondu Frank Lämmer 2014-05-12 12:52:38

Assurez-vous que overflow est défini sur "scroll" et non sur "auto"."Cela dit, dans OS X Lion, le débordement défini sur "scroll" se comporte plus comme auto dans ce que les barres de défilement ne s'afficheront toujours que lorsqu'elles sont utilisées. Donc, si les solutions ci-dessus ne semblent pas fonctionner, c'est peut-être pourquoi.

C'est ce dont vous aurez besoin pour le réparer:

::-webkit-scrollbar {
  -webkit-appearance: none;
  width: 7px;
}
::-webkit-scrollbar-thumb {
  border-radius: 4px;
  background-color: rgba(0, 0, 0, .5);
  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
}

Vous pouvez le styliser en conséquence si vous n'aimez pas la valeur par défaut.

17
répondu molls223 2015-07-07 20:27:20
html {height: 101%;}

J'utilise Cette solution multi-navigateurs (note: j'utilise toujours la déclaration DOCTYPE en 1ère ligne, Je ne sais pas si cela fonctionne dans quirksmode, Je ne l'ai jamais testé).

Cela affichera toujours une barre de défilement verticale ACTIVE dans chaque page, la barre de défilement verticale ne sera défilable que de quelques pixels.

Lorsque le contenu de la page est plus court que la zone visible du navigateur (port d'Affichage), vous verrez toujours la barre de défilement verticale active, et elle ne sera défilante que de quelques pixels.

Dans le cas où vous êtes obsédé par la validation CSS (je suis obesessed uniquement avec la validation HTML) en utilisant cette solution, votre code CSS validerait également pour le W3C car vous n'utilisez pas d'attributs CSS non standard comme -moz-scrollbars-vertical

10
répondu Marco Demaio 2013-02-17 14:51:33

body { height:101%; } va "recadrer" des pages plus grandes.

Au lieu de cela, j'utilise:

body { min-height:101%; }
10
répondu Scott 2016-04-01 15:54:08

Une autre approche consiste à définir la largeur de l'élément html à 100vw. Sur beaucoup, sinon la plupart des navigateurs, cela annule l'effet des barres de défilement sur la largeur.

html { width: 100vw; }
2
répondu lunelson 2015-06-08 08:13:53

J'ai pu faire fonctionner cela en l'ajoutant à la balise body. Était plus agréable pour moi parce que je n'ai rien sur l'élément html.

body {
    overflow-y: scroll;
}
1
répondu Jazzepi 2013-07-28 14:27:02

Ajoutez ce code à votre feuille de style CSS:

html {overflow-y: scroll;}

, ce Qui est tout là est à lui !

1
répondu iCrazybest 2015-07-07 02:30:36

Définir la hauteur à 101% est ma solution au problème. Vous les pages ne seront plus "flick" lors de la commutation entre ceux qui dépassent la hauteur de la fenêtre et ceux qui ne le font pas.

0
répondu Sanjaal Corps 2012-02-10 15:07:06