843 Stimmen

Ausblenden der Bildlaufleiste auf einer HTML-Seite

Kann man mit CSS die Bildlaufleiste ausblenden? Wie würden Sie dies tun?

5 Stimmen

@UweKeim, es gibt keinen Trick für IE11

11voto

JoshW Punkte 141

Zusätzlich zur Antwort von Peter:

#element::-webkit-scrollbar {
    display: none;
}

Dies gilt auch für Internet Explorer 10:

 #element {
      -ms-overflow-style: none;
 }

10voto

Blake Plumb Punkte 6039

Browserübergreifender Ansatz zum Ausblenden der Bildlaufleiste.

Es wurde mit Edge, Chrome, Firefox und Safari getestet.

Blenden Sie die Bildlaufleiste aus, während Sie weiterhin mit dem Mausrad scrollen können!

Codepen

/* Make parent invisible */
#parent {
    visibility: hidden;
    overflow: scroll;
}

/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */
#parent:not(*:root) {
  visibility: visible;
}

/* Make Safari and Chrome scrollbar invisible */
#parent::-webkit-scrollbar {
  visibility: hidden;
}

/* Make the child visible */
#child {
    visibility: visible;
}

1 Stimmen

Eine Erklärung, wie das funktioniert, wäre willkommen - mit der Sichtbarkeit von Eltern und Kindern zu spielen, um die Bildlaufleiste auszublenden, ist grauenhaft

1 Stimmen

@believesInSanta Ich habe Kommentare und Codepen hinzugefügt, um es besser zu erklären. Ich stimme nicht mit Ihrer Einschätzung überein, dass das Spiel mit der Sichtbarkeit ein schrecklicher Weg ist, um die Bildlaufleiste zu verstecken. Ich verstehe, dass es ein Hack ist, aber der richtige Weg, um diesen Effekt zu erreichen, wäre, wenn alle Browser eine Möglichkeit unterstützen, die Bildlaufleiste separat zu gestalten, wie es Chrome und Safari erlauben.

2 Stimmen

Ich habe mich einfach in Ihre Lösung verliebt. Sie funktioniert perfekt (in Anwendungen, die für die Verwendung mit modernen Browsern konzipiert sind). Ich danke Ihnen vielmals!

7voto

Seth W. Klein Punkte 178

Wenn Sie möchten, dass der Bildlauf funktioniert, bevor Sie die Bildlaufleisten ausblenden, sollten Sie das Styling sie. Moderne Versionen von OS X und mobilen Betriebssystemen haben Bildlaufleisten, die zwar unpraktisch sind, um sie mit der Maus zu greifen, aber sehr schön und neutral sind.

Zum Ausblenden von Bildlaufleisten, eine Technik von John Kurlak funktioniert gut, außer beim Verlassen Firefox-Nutzer, die keine Touchpads haben, können nicht scrollen, es sei denn, sie eine Maus mit einem Rad haben, was sie wahrscheinlich haben, aber selbst dann können sie normalerweise nur vertikal scrollen.

Die Technik von John besteht aus drei Elementen:

  • Ein äußeres Element zur Maskierung der Bildlaufleisten.
  • Ein mittleres Element, das die Bildlaufleisten enthält.
  • Und ein Inhaltselement, um sowohl die Größe des mittleren Elements festzulegen als auch die Scrollbalken zu haben.

Es muss möglich sein, die Größe des äußeren und des inneren Elements gleich zu setzen was die Verwendung von Prozentsätzen überflüssig macht, aber ich kann mir nichts anderes vorstellen, das nicht mit der richtigen Einstellung funktionieren würde.

Meine größte Sorge ist, ob alle Versionen von Browsern Bildlaufleisten so einstellen, dass sichtbaren überlaufenden Inhalt sichtbar zu machen. Ich habe es in aktuellen Browsern getestet, aber nicht mit älteren Browsern.

Verzeihen Sie meine SASS ;P

%size {
    // set width and height
}

.outer {
    // mask scrollbars of child
    overflow: hidden;
    // set mask size
    @extend %size;
    // has absolutely positioned child
    position: relative;
}

.middle {
    // always have scrollbars.
    // don't use auto, it leaves vertical scrollbar showing
    overflow: scroll;
    // without absolute, the vertical scrollbar shows
    position: absolute;
}
// prevent text selection from revealing scrollbar, which it only does on
// some webkit based browsers.
.middle::-webkit-scrollbar {
    display: none;
}

.content {
    // push scrollbars behind mask
    @extend %size;
}

Prüfung

OS X ist 10.6.8. Windows ist Windows 7.

  • Firefox 32.0 Scrollbalken ausgeblendet. Mit den Pfeiltasten kann man nicht scrollen, auch nicht nach einem Klick zum Fokussieren, aber Mausrad und zwei Finger auf dem Trackpad tun es. OS X und Windows.
  • Chrome 37.0 Bildlaufleisten ausgeblendet. Pfeiltasten funktionieren nach Anklicken zum Fokussieren. Mausrad und Trackpad funktionieren. OS X und Windows.
  • Internet Explorer 11 Bildlaufleisten ausgeblendet. Pfeiltasten funktionieren nach dem Klicken zum Fokussieren. Mausrad funktioniert. Windows.
  • Safari 5.1.10 Bildlaufleisten ausgeblendet. Pfeiltasten funktionieren nach dem Klicken zum Fokussieren. Mausrad und Trackpad funktionieren. OS X.
  • Android 4.4.4 und 4.1.2. Scrollbalken ausgeblendet. Scrollen durch Berührung funktioniert. Ausprobiert in Chrome 37.0, Firefox 32.0 und HTMLViewer auf 4.4.4 (was auch immer das ist). In HTMLViewer hat die Seite die Größe des maskierten Inhalts und kann auch gescrollt werden! Scrollen interagiert akzeptabel mit dem Zoomen der Seite.

1 Stimmen

Unabhängige Anmerkung (was die Frage anbelangt). In diesem Fall sollten Sie @extend statt @include verwenden. Also statt @mixin{} würden Sie %size{} rufen Sie dann in den css-Selektoren @extend %size; . Mixins werden typischerweise verwendet, wenn Sie Variablen einbeziehen, um ein Ergebnis zurückzugeben. Platzhalter (auch bekannt als @extend) sind für einfachen, sich wiederholenden Code wie diesen gedacht - wo keine "Funktion" benötigt wird.

1 Stimmen

Ich bearbeitete, um @extend zu verwenden. Das Ergebnis ist wahrscheinlich weniger verständlich für Leute, die SCSS nicht kennen, aber gut genug.

7voto

Huu Phong Nguyen Punkte 1072

Kopieren Sie diesen CSS-Code in den Kundencode zum Ausblenden der Bildlaufleiste:

<style>

    ::-webkit-scrollbar {
       display: none;
    }

    #element::-webkit-scrollbar {
       display: none;
    }

</style>

7voto

Brad Azevedo Punkte 351

Ich wollte nur alle anderen, die diese Frage lesen, darauf hinweisen, dass die Einstellung overflow: hidden (oder overflow-y) auf dem body Element hat bei mir die Bildlaufleisten nicht ausgeblendet.

Ich musste die html Element.

3 Stimmen

Ich kann mich nicht mehr genau erinnern, da es schon ein paar Monate her ist, aber ich glaube, die Einstellung des Überlaufs auf dem Körper funktionierte in Chrome, aber nicht in Firefox (oder umgekehrt). Die Verwendung des HTML-Tags funktionierte jedoch bei beiden.

0 Stimmen

Soweit ich mich erinnere, kann dies ein Unterschied im Mackenmodus sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X