Lassen Sie die Bildlaufleiste keinen Platz einnehmen / verhindern Sie Layoutverschiebungen

Lesezeit: 8 Minuten

Benutzeravatar von Porter Morgan
Portier Morgan

Ich mache eine Anwendung mit HTML und brauche eine Bildlaufleiste. Aber immer wenn ich eine hinzufüge, verschiebt es alles, um den nötigen Platz für die Bildlaufleiste zu schaffen. Dies vermasselt das Layout der Anwendung.

Ich brauche also eine Möglichkeit, die Bildlaufleiste einfach über die Seite zu legen, was bedeutet, dass die Seite immer noch dahinter ist. Ich weiß bereits, wie man die Bildlaufleiste gestaltet, um die Rückseite transparent zu machen, ich brauche nur die Bildlaufleiste, um keinen Platz einzunehmen.

Danke im Voraus!

  • Können Sie Ihren aktuellen Code angeben, vielleicht damit?. Mein psychisch Kräfte funktionieren heute nicht gut. Außerdem, wenn die scrollbar nimmt keinen Platz ein … wie würden Sie scrollen …? Am besten erzwingen Sie hier, dass die Bildlaufleiste IMMER angezeigt wird. Verwenden Sie alternativ Polsterung für Ihre Elemente, damit dies nicht passiert.

    – Nikolaus Hasel

    26. Januar 2014 um 18:28 Uhr


  • Wenn Sie Code in JSFiddle posten, sollte er auch hier gepostet werden, damit die Frage in sich abgeschlossen ist. Natürlich sollte der Code trotzdem hier gepostet werden, aber das Posten nur an JSFiddle oder ähnliches ist nicht zufriedenstellend.

    – ajp15243

    26. Januar 2014 um 18:31 Uhr


  • Ich meine, die Bildlaufleiste ist da, es ist nur so, dass der Inhalt der Website dahinter sein könnte, als ob die Bildlaufleiste nicht da wäre, aber Sie können sie immer noch sehen

    – Portier Morgan

    26. Januar 2014 um 19:12 Uhr

  • @NicholasHazel, wenn der Inhalt nicht bis zum Ende der Seite reicht, wird die Bildlaufleiste nicht angezeigt.

    – jaakow

    17. Juli 2016 um 20:24 Uhr

Benutzeravatar von Sos Sargsyan
Sos Sargsjan

Aktualisieren – overlay war nur Webkit und ist jetzt veraltet.


Du kannst den … benutzen overflow overlay Eigentum statt scroll:

html {
    overflow-y: overlay;
}

  • overflow: overlay ist veraltet und sollte nicht verwendet werden. Und wird nur in WebKit-basierten Browsern unterstützt. Sehen developer.mozilla.org/en-US/docs/Web/CSS/overflow

    – Thymian

    8. März 2019 um 16:26 Uhr


  • Leider, während es irgendwie funktioniert, wird es den Inhalt nicht sichtbar hinter der Breite der Bildlaufleiste darstellen. Es ist irgendwie komisch.

    – Winterzähler

    1. September 2020 um 9:26 Uhr

  • Ich kann nicht erkennen, dass dies veraltet ist. Es funktioniert noch im Jahr 2022 und scheint eine gültige progressive Lösung für Webkit-basierte Browser zu sein.

    – suncat100

    28. November um 5:21 Uhr

Benutzeravatar von KyleMit
KyleMit

Update 2021 – Verwenden scrollbar-gutter

Das scrollbar-gutter Die CSS-Eigenschaft ermöglicht es Autoren, Platz für die Bildlaufleiste zu reservieren, wodurch unerwünschte Layoutänderungen verhindert werden, wenn der Inhalt wächst, und unnötige visuelle Elemente vermieden werden, wenn kein Bildlauf erforderlich ist.

body {
  overflow-y: auto;
  scrollbar-gutter: stable;
}

Beispiel

Beispiele für Bildlaufleiste und Bundsteg

Demo in Stack Snippets und jsFiddle

body {
  padding: 16px;
}
.grid {
    display: grid;
    grid-template-columns: repeat(2, 273px);
    grid-gap: 16px;
}
.card-header {
  margin-bottom: 4px;
  white-space: pre-line;
  font-weight: bold;
}
.card-body {
  overflow: auto;
  border: 1px solid black;
  height: 120px;
  
}
.scrollbar-stable {
  scrollbar-gutter: stable;
}
<h1><code>scrollbar-gutter</code> sample</h1>

<div class="grid">

  <div class="card">
    <pre class="card-header">
overflow: auto;
scrollbar-gutter: auto;
    </pre>
    <div class="card-body">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol</div>
  </div>
  
  <div class="card">
    <pre class="card-header">
overflow: auto;
scrollbar-gutter: stable;
    </pre>
    <div class="card-body scrollbar-stable">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol</div>
  </div>
  
  <div class="card">
    <pre class="card-header">
overflow: auto;
scrollbar-gutter: auto;
    </pre>
    <div class="card-body">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol borking doggo with a long snoot for pats shibe long woofer very hand that feed shibe pats, vvv wow such tempt long woofer heckin fluffer. Long water shoob smol corgo sub woofer</div>
  </div>
  
  <div class="card">
    <pre class="card-header">
overflow: auto;
scrollbar-gutter: stable;
    </pre>
    <div class="card-body scrollbar-stable">Doggo ipsum length boy noodle horse doing me a frighten doggorino, woofer he made many woofs. Thicc puggorino smol borking doggo with a long snoot for pats shibe long woofer very hand that feed shibe pats, vvv wow such tempt long woofer heckin fluffer. Long water shoob smol corgo sub woofer</div>
  </div>
  
</div>

Weiterführende Lektüre

  • Die Frage fragt, wie man dafür sorgen kann, dass es keinen Platz einnimmt, dadurch nimmt es immer Platz ein.

    – Glaskanone

    22. August um 22:28 Uhr

  • @GlassCannon, die Frage fragt auch, wie “Layoutverschiebungen verhindert” werden können, was dadurch gelöst wird, fügte jedoch einen Link zu einigen alternativen Lösungen hinzu, um keinen Platz zu beanspruchen (obwohl dies für Benutzer, die sich auf die Verfügbarkeit von Bildlaufleisten verlassen, Herausforderungen darstellen kann).

    – KyleMit

    23. August um 11:43 Uhr

Es gibt keine Möglichkeit, eine Bildlaufleiste anzuzeigen oben drauf Ihrer Inhalte, ohne zwielichtige Hacks zu verwenden, und es ist ohnehin nicht die beste Idee, da dies die Benutzerfreundlichkeit Ihrer App beeinträchtigt. Wenn sich die Bildlaufleiste über dem Inhalt befindet, werden Links/Text/usw. wahrscheinlich ausgeblendet.

Ihre Seite sollte idealerweise so gestylt sein, dass sie sich an verschiedene Browser-/Seitenbreiten anpasst, ohne zu brechen. Vor allem mit nur einer kleinen Bildlaufleiste.

Wie auch immer, hier ist ein Workaround, der helfen kann:

html {
    overflow-y: scroll;
}

Das Hinzufügen dieses Stils stellt sicher, dass die Spur der Bildlaufleiste immer vorhanden ist, und hilft auch, “springende” Seiten zu vermeiden, wenn eine Bildlaufleiste erscheint/verschwindet. Auch hier besteht die wirkliche Lösung darin, ein flexibles Layout zu verwenden.

Als Randbemerkung wird das Gestalten der Bildlaufleiste im Allgemeinen nicht empfohlen. Es funktioniert nicht browserübergreifend und wird normalerweise vollständig ignoriert.

  • ^ Ja, was er gesagt hat. +1

    – Nikolaus Hasel

    26. Januar 2014 um 18:36 Uhr


  • Ich muss mich nicht um Cross-Browser kümmern, da ich tidesdk verwende, das nur Webkit verwendet. Ich denke, ich muss einfach einen Weg finden, damit umzugehen. Danke!

    – Portier Morgan

    26. Januar 2014 um 19:04 Uhr

  • Ich würde es nicht einmal im Webkit empfehlen, tatsächlich gab es kürzlich ein Update, das die Bildlaufleiste drastisch verändert hat.

    – Wesley Murch

    26. Januar 2014 um 19:16 Uhr

  • Großartig! Ich teste es und es funktioniert wie erwartet.

    – sherwin00103898-276165-15433

    9. April um 1:45

  • Bitte beziehen Sie sich auf die Antwort von KyleMit, die hervorragend funktioniert.

    – Manoj TM

    24. Mai um 5:01 Uhr

Sie können dies lösen, indem Sie die Bildlaufleiste ausblenden. Die Lösung finden Sie auf der ws3Schools-Website, https://www.w3schools.com/howto/howto_css_hide_scrollbars.asp

<!DOCTYPE html>
<html>
<head>
<style>
.example {
  background-color: #eee;
  width: 200px;
  height: 100px;
  border: 1px dotted black;
  overflow-y: scroll; /* Add the ability to scroll */
}

/* Hide scrollbar for Chrome, Safari and Opera */
.example::-webkit-scrollbar {
    display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
.example {
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
}
</style>
</head>
<body>

<h2>Hide scrollbar but keep functionality</h2>
<p>Try to scroll inside the div below:</p>

<div class="example">Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. Some text to enable scrolling.. </div>

</body>
</html>

Benutzeravatar von PaperStrike
PaperStrike

Wenn Sie keine Angst haben, etwas versteckt zu haben, scheint der folgende Code zu funktionieren.

body {
  width: 100vw;
  overflow-x: hidden;
}

@supports (overflow-x: clip) {
  body {
    overflow-x: clip;
  }
}

Der Unterschied zwischen clip und hidden Ist das das clip Schlüsselwort verbietet auch alles Scrollen, einschließlich programmatisches Scrollen. Für Browser nicht unterstützt clipzurücksetzen scrollLeft zu 0 beim Scroll-Event-Callback von document.body wenn benötigt.

Siehe auch, Browserkompatibilität von overflow.

Benutzeravatar von Sze Yu Sim
Sze Yu Sim

Wenn Sie die Bildlaufleiste die ganze Zeit ausblenden möchten, können Sie diesen Code verwenden. * meine alle

/* Hide scrollbar for Chrome, Safari and Opera */
*::-webkit-scrollbar {
    display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
*{
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
}

1437090cookie-checkLassen Sie die Bildlaufleiste keinen Platz einnehmen / verhindern Sie Layoutverschiebungen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy