Lassen Sie die Bildlaufleiste keinen Platz einnehmen / verhindern Sie Layoutverschiebungen
Lesezeit: 8 Minuten
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
Sos Sargsjan
Aktualisieren – overlay war nur Webkit und ist jetzt veraltet.
Du kannst den … benutzen overflowoverlay Eigentum statt scroll:
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
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;
}
<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>
Verhindert, dass sich die Bildlaufleiste zur Breite der Seite in Chrome addiert
Chrome reserviert Platz für die Bildlaufleiste, auch wenn sie ausgeblendet ist
CSS 100 % Breite, aber Bildlaufleiste vermeiden
Alternativedamit die Bildlaufleiste niemals Platz beansprucht, siehe:
Bildlaufleiste ausblenden, aber trotzdem scrollen
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.
<!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>
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.
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