Die Haupt-Bildlaufleiste immer sichtbar machen

178

Welches CSS ist erforderlich, damit die vertikale Bildlaufleiste des Browsers sichtbar bleibt, wenn ein Benutzer eine Webseite besucht (wenn die Seite nicht über genügend Inhalt verfügt, um die Aktivierung der Bildlaufleiste auszulösen)?

Deniz Dogan
quelle
1
Um das Springen von Bildlaufleisten in Windows zu verhindern, gibt es eine bessere Lösung .
Josh Habdas

Antworten:

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

Dadurch wird die Bildlaufleiste immer sichtbar und nur bei Bedarf aktiv.

Update: Wenn das oben genannte nicht funktioniert, kann dies nur verwendet werden.

html {
    overflow-y:scroll;
}
Corv1nus
quelle
3
Haben Sie eine Idee, für welche Version von FF Unterstützung geleistet wurde overflow-y? Wie es scheint, -moz-scrollbars-verticalist das zugunsten der overflow-yImmobilie veraltet .
Ionuț G. Stan
Ich denke, Internet Explorer 6.x +, Firefox 1.5+, wenn ich mich richtig erinnere. Ich habe den obigen Code verwendet und er funktioniert in FF1.5-3.5.1 und IE6-8 für mich.
Corv1nus
2
Gibt es Alternativen zum "Seitenspringen", wenn bestimmte Seiten Ihrer Website zu klein sind, um eine Bildlaufleiste zu haben, und andere? Oder ist das die "Best Practice"? Ich muss zugeben, ich sehe nicht viele Seiten auf den Websites, die keine ganze Seite einnehmen.
Jess
2
Ich bin mir nicht sicher, ob dies eine bewährte Methode ist, aber es ist normalerweise eine akzeptable Lösung, Bildlaufleisten auf allen Seiten zu haben und nur bei Bedarf aktiv zu sein, um ein Seitenspringen zu vermeiden. Ich bevorzuge die konstante Bildlaufleiste gegenüber dem Sprung.
Corv1nus
1
Für diejenigen (wie ich), die das Styling htmletwas hackig finden , ist zu beachten, dass Sie :rootstattdessen den strukturellen Pseudo-Selektor verwenden können html. Siehe: developer.mozilla.org/en-US/docs/Web/CSS/:root
Rounin
29

Stellen Sie sicher, dass der Überlauf auf "Scrollen" und nicht auf "Automatisch" eingestellt ist. Nachdem das gesagt worden ist wurde , wird nach wie vor nur zeigen in OS X Lion, Überlauf auf „Scroll“ verhält sich mehr wie Auto, dass Scrollbalken , wenn verwendet. Wenn also die oben genannten Lösungen nicht funktionieren, ist dies möglicherweise der Grund.

Folgendes müssen Sie beheben:

::-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);
}

Sie können es entsprechend formatieren, wenn Ihnen die Standardeinstellung nicht gefällt.

molls223
quelle
1
Dieses Ding funktioniert! Aber wie kann man es nur auf einem bestimmten Div machen?
Rich
@Rich wie jedes andere CSS-Element. .yourdiv :: - Webkit-Bildlaufleiste {...}
Kris
@Kris Hallo, danke für die Antwort, hier ist das Beispiel dafür. stackoverflow.com/a/54667091/2637261
Rich
Warum wird das verwendet-webkit-appearance: none;
Suraj Jain
Das ist toll! Sollte die akzeptierte Antwort sein.
Cyberpunker
25

Die Dinge haben sich in den letzten Jahren geändert. Die obigen Antworten sind nicht mehr in allen Fällen gültig. Apple drückt überall verschwindende Bildlaufleisten . Safari, Chrome und sogar Firefox auf MacOs (und iOs) zeigen nur Bildlaufleisten an, wenn tatsächlich gescrollt wird - ich weiß nichts über das aktuelle Windows / IE. Es gibt jedoch nicht standardmäßige Möglichkeiten, Bildlaufleisten in Webkit zu formatieren (IE hat dies vor langer Zeit gelöscht).

Frank Lämmer
quelle
aber es verschlechtert sich anmutig richtig auf diese neuen?
Ben
3
Vielen Dank für diesen hervorragenden Punkt in den verschwundenen Bildlaufleisten. Für mich bestand der Grund, die Bildlaufleiste sichtbar zu halten, darin, diesen leichten, aber sehr auffälligen und sehr nervigen Ruck zu vermeiden, wenn sich der Inhalt von Bildlauf zu Nicht-Bildlauf ändert. Mit den verschwindenden Bildlaufleisten ruckeln sie den Körper nicht, wenn sie sich zeigen und verstecken, also ist es für mich in Ordnung. Aber danke für diesen hervorragenden Punkt.
Noitidart
4
Unter UX-Gesichtspunkten möchten wir meistens, dass die Bildlaufleiste sichtbar ist. Gemäß dem aktuellen Trend: Wenn eine Bildlaufleiste nicht sichtbar ist, ist es ein zusätzlicher Schritt, eine sichtbare Liste "auszuprobieren", um mehr in der Liste zu erhalten. Ein zusätzlicher visueller Hinweis darauf, dass das Dropdown-Menü oder die Liste mehr Elemente enthält, wird nicht benötigt, wenn Personen eine Bildlaufleiste sehen.
Windsurf88
24
html {
    overflow-y: scroll;
}

Ist es das was du willst?

Leider scheint Opera 9.64 diese CSS-Deklaration zu ignorieren, wenn sie auf HTMLoder angewendet wird BODY, obwohl sie für andere Elemente auf Blockebene wie funktioniert DIV.

Ionuț G. Stan
quelle
13
html {height: 101%;}

Ich verwende diese browserübergreifende Lösung (Hinweis: Ich verwende immer die DOCTYPE-Deklaration in der ersten Zeile. Ich weiß nicht, ob sie im Quirksmode funktioniert, habe sie nie getestet ).

Dies zeigt immer eine aktive vertikale Bildlaufleiste an auf jeder Seite Bildlaufleiste angezeigt. Die vertikale Bildlaufleiste kann nur mit wenigen Pixeln gescrollt werden.

Wenn der Seiteninhalt kürzer ist als der sichtbare Bereich des Browsers (Ansichtsfenster) ist, wird die vertikale Bildlaufleiste weiterhin aktiv angezeigt und kann nur mit wenigen Pixeln gescrollt werden.

Wenn Sie von der CSS-Validierung besessen sind (ich bin nur von der HTML-Validierung besessen), wenn Sie diese Lösung verwenden, wird Ihr CSS-Code auch für W3C validiert, da Sie keine nicht standardmäßigen CSS-Attribute wie verwenden -moz-scrollbars-vertical

Marco Demaio
quelle
1
Elegante Lösung
Artur Keyan
12

body { height:101%; } "schneidet" größere Seiten.

Stattdessen benutze ich:

body { min-height:101%; }
Scott
quelle
1
Diese Frage wurde vor 5 Jahren gestellt und hat bereits eine akzeptierte Antwort. Ihre Antwort liefert keine bessere Antwort als die bereits akzeptierte Antwort.
Dipen Shah
18
Diese Antwort enthält tatsächlich zusätzliche Informationen, die in den anderen Antworten nicht enthalten sind.
GaTechThomas
2

Ich konnte dies zum Laufen bringen, indem ich es dem Body-Tag hinzufügte. War schöner für mich, weil ich nichts im HTML-Element habe.

body {
    overflow-y: scroll;
}
Jazzepi
quelle
2

Ein alternativer Ansatz besteht darin, die Breite des HTML-Elements auf 100 VW festzulegen. Bei vielen, wenn nicht den meisten Browsern wird dadurch die Auswirkung von Bildlaufleisten auf die Breite negiert.

html { width: 100vw; }
Lunelson
quelle
0

Das Einstellen der Höhe auf 101% ist meine Lösung für das Problem. Ihre Seiten blättern nicht mehr, wenn Sie zwischen solchen wechseln, die die Höhe des Ansichtsfensters überschreiten, und solchen, die dies nicht tun.

Sanjaal Corps
quelle
0
body { 
    min-height: 101vh; 
} 

funktioniert am besten für mich

Lolo
quelle
0

Ich mache das:

html {
    margin-left: calc(100vw - 100%);
    margin-right: 0;
}

Dann muss ich nicht auf die hässlich ausgegraute Bildlaufleiste schauen, wenn sie nicht benötigt wird.

Stian
quelle
Die Frage verlangt, dass es immer sichtbar ist.
Corv1nus