Die Haupt-Bildlaufleiste immer sichtbar machen


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

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.


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).


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.


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


1
Elegante Lösung
Artur Keyan

12

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

Stattdessen benutze ich:

body { min-height:101%; }

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

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

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.


0
body { 
    min-height: 101vh; 
} 

funktioniert am besten für mich


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.


Die Frage verlangt, dass es immer sichtbar ist.
Corv1nus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.