DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die overflow-Eigenschaft steuert, was mit Inhalten geschieht, die über die Grenzen eines Elements hinausgehen: Stellen Sie sich ein div vor, dessen Breite Sie explizit auf 200 Pixel gesetzt haben, das aber ein Bild mit 300 Pixel Breite enthält. Dieses Bild ragt aus dem div heraus und ist standardmäßig visible. Wenn Sie jedoch den overflow-Wert auf hidden setzen, wird das Bild bei 200 Pixel abgeschnitten.
div {
overflow: visible | hidden | scroll | auto | inherit
}
Werte
visible: Inhalte werden nicht abgeschnitten, wenn sie über ihre Box hinausgehen. Dies ist der Standardwert der Eigenschafthidden: Überlaufende Inhalte werden versteckt.scroll: Ähnlich wie hidden, nur dass Benutzer durch die ausgeblendeten Inhalte scrollen können.clip: Inhalte werden abgeschnitten, wenn sie über ihre Box hinausgehen. Dies kann mitoverflow-clip-marginverwendet werden, um den abgeschnittenen Bereich festzulegen.auto: Wenn Inhalte über ihre Box hinausgehen, werden diese Inhalte versteckt, während eine Scrollleiste sichtbar sein sollte, damit Benutzer den Rest der Inhalte lesen können.initial: Verwendet den Standardwert, dervisibleistinherit: Setzt den Überlauf auf den Wert seines Elternelements.
Denken Sie daran, dass Text natürlich am Ende eines Elements umbricht (es sei denn, white-space wird geändert), sodass Text selten die Ursache für Überlauf ist. Wenn keine Höhe festgelegt ist, erweitert Text ein Element einfach auch in die Höhe. Überlauf wird häufiger, wenn explizite Breiten und Höhen festgelegt sind und es unerwünscht wäre, wenn Inhalte herausragen, oder wenn das Scrollen explizit vermieden wird.
visible
Wenn Sie die Überlaufeigenschaft überhaupt nicht festlegen, ist der Standardwert sichtbar. Daher gibt es im Allgemeinen keinen Grund, diese Eigenschaft explizit auf sichtbar zu setzen, es sei denn, Sie überschreiben sie, woanders festgelegt.

Das Wichtigste hier ist, dass, obwohl der Inhalt außerhalb der Box sichtbar ist, dieser Inhalt den Fluss der Seite nicht beeinflusst. Zum Beispiel

Im Allgemeinen sollten Sie Boxen mit Webtexten ohnehin keine statischen Höhen zuweisen, daher sollte es nicht vorkommen.
hidden
Das Gegenteil des Standardwerts visible ist hidden. Dies blendet buchstäblich jeden Inhalt aus, der über die Box hinausgeht.

Dies ist besonders nützlich bei dynamischen Inhalten und der Möglichkeit, dass ein Überlauf ernsthafte Layoutprobleme verursacht. Beachten Sie jedoch, dass Inhalte, die auf diese Weise ausgeblendet werden, absolut unzugänglich sind (außer durch Betrachten des Quellcodes). Wenn also ein Benutzer seine Standard-Schriftgröße größer eingestellt hat, als Sie erwarten, könnten Sie Text aus einer Box herausdrängen und ihn ihm komplett vorenthalten.
scroll
Wenn Sie den Überlaufwert einer Box auf scroll setzen, werden Inhalte, die außerhalb der Box gerendert werden, ausgeblendet, aber es werden Scrollleisten angeboten, um das Innere der Box zu scrollen und die Inhalte anzuzeigen.

Besonders hervorzuheben ist bei diesem Wert, dass Sie IMMER SOWOH horizontal als auch vertikale Scrollleisten erhalten, egal was passiert, selbst wenn der Inhalt nur eines davon benötigt.
Das Momentum-Scrolling von iOS kann für diesen Wert mit -webkit-overflow-scrolling aktiviert werden.
Hinweis: In OS X Lion verhält sich scroll, wenn Scrollleisten nur bei Bedarf angezeigt werden, eher wie auto, da nur benötigte Scrollleisten angezeigt werden.
auto
Auto-Überlauf ist dem Scroll-Wert sehr ähnlich, nur dass er das Problem der Scrollleisten löst, wenn Sie sie nicht benötigen. Die Scrollleisten werden nur angezeigt, wenn Inhalte tatsächlich aus dem Element herausragen.

overflow-x und overflow-y
Es ist auch möglich, den Überlauf von Inhalten horizontal oder vertikal mit den Eigenschaften overflow-x und overflow-y zu manipulieren. Zum Beispiel kann im folgenden Demo der horizontale Überlauf durchgescrollt werden, während der Text, der über die Höhe der Box hinausgeht, ausgeblendet wird.
.box {
overflow-y: hidden;
overflow-x: scroll;
}
Float-Bereinigung
Eine der beliebtesten Verwendungen der Überlaufeigenschaft ist seltsamerweise die Float-Bereinigung. Das Setzen von overflow bereinigt den Float nicht *am* Element, es *selbst-bereinigt* sich. Das bedeutet, dass das Element mit overflow (jeder Wert außer visible) so groß wird, wie es benötigt, um darin enthaltene, gefloatete Kindelemente zu umfassen (anstatt zu kollabieren), vorausgesetzt, die Höhe ist nicht deklariert. So wie hier

Eine bessere Float-Bereinigungstechnik ist der clearfix, da er nicht erfordert, dass Sie die overflow-Eigenschaft so ändern, wie Sie es nicht benötigen.
Erzeugung eines Blockformatierungskontexts
Es ist interessant festzustellen, dass overflow auch einen neuen Blockformatierungskontext erzeugt, was nützlich ist, wenn wir ein Blockelement neben einem gefloateten Element ausrichten wollen. Im folgenden Beispiel zeigen wir, wie sich eine Reihe von Absätzen standardmäßig mit einem gefloateten Bild interagieren, und verwenden dann overflow: hidden, um den Text in seiner eigenen Box auszurichten.
Dies stammt aus einem großartigen Beitrag von Nicole Sullivan, der später das media object inspirierte.
Können Scrollleisten mit CSS gestaltet werden?
Früher konnte man Scrollleisten in IE (v5.5?) gestalten, aber nicht mehr. Sie können sie jetzt wieder in WebKit-Browsern gestalten. Wenn Sie browserübergreifende benutzerdefinierte Scrollleisten benötigen, schauen Sie auf JavaScript.
Wenn ein Element Scrollleisten angehängt werden müssen, um den Überlaufwert zu erfüllen, fügt Firefox sie außerhalb des Elements ein und behält die sichtbare Breite/Höhe bei, wie deklariert. IE fügt die Scrollleisten innen ein und behält die Gesamtbreite/Höhe bei, wie deklariert.
Demo
Demos für diesen Artikel stammen von dieser Beispielsseite.
Browser-Unterstützung
Diese Browser-Supportdaten stammen von Caniuse, wo weitere Details zu finden sind. Eine Zahl bedeutet, dass der Browser das Feature ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 90 | 81 | 11 | 90 | 16.0 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 16.0 |
Weitere Informationen
- Verständnis des bescheidenen Clearfix
- Überlauf: Ein geheimer Vorteil
- Überlauf auf MDN
- Überlauf auf W3C
- Finden/Beheben von unbeabsichtigtem Body-Überlauf
Gute Sache... aber ich möchte die CSS-Eigenschaften "overflow-x" und "overflow-y" erwähnen. Diese sind manchmal sehr nützlich!
Wirklich hilfreich, danke :D
Hallo, in Android OS, overflow: scroll; -webkit-overflow-scrolling: touch; wird nicht unterstützt
Hallo, ich schätze Ihre Bemühungen! Aber ich habe ein Problem. Ich habe fünf Bilder in einer Diashow in einem div-Element und das Layout der Webseite ist gut flüssig. Die Verwendung von overflow auf dem div-Element fügt entweder Scrollbalken zum div-Element hinzu oder schneidet das Bild ab (was sehr seltsam aussieht). Bitte schlagen Sie mir etwas vor, damit das Bild nicht überläuft.
Verwenden Sie overflow-x:hidden; das ist besser
OMG, ich möchte Ihr Baby haben. Ich habe vier Stunden lang mit diesem No-Scrollbar-Problem in IE9 herumgeärgert und Ihre Lösung, overflow: visible zu entfernen und den Browser standardmäßig auf die Scrollleisten zurückgreifen zu lassen, war absolut brillant. Danke!
Das ist die große "Streckung", die diese Betrüger verkaufen.
Chris,
Haben Sie eine Ahnung, ob dies möglich ist, wenn das Container-Element keine feste Breite hat? Mit anderen Worten, wenn der Wrapper nicht explizit gesetzt ist, sondern vom Seiten-Wrapper oder Body definiert wird? (Mit anderen Worten, '100%' )
Ich möchte eine scrollbare Subnavigation erstellen, die so breit wie das Viewport eines Mobilgeräts sein kann und sich je nach Bildschirmorientierung anpasst.
Ich sollte klarstellen, dass es nur entlang der x-Achse scrollbar sein soll.
Gab es eine Antwort auf diese Frage? Ich habe die gleiche Anforderung. Danke, Bill. Die Frage war: "..ist dies möglich, wenn das Container-Element keine feste Breite hat? Mit anderen Worten, wo der Wrapper nicht explizit gesetzt ist, sondern vom Seiten-Wrapper oder Body definiert wird? (Mit anderen Worten, '100%')
Das ist zweifellos zu spät, aber ich hätte eine Antwort auf diesen Thread letzte Woche sehr geschätzt, also hier ist, was ich herausgefunden habe.
Ich konnte es mit einer Breite von
100%in seinem Container-Element nie zum Laufen bringen, aber die Dinge gingen ziemlich einfach, sobald ich zuvw-Einheiten wechselte (eine Einheit, die 1% der Viewport-Größe entspricht). Wenn Sie sowieso die volle Breite des Viewports anstreben, ist100vweine gute Alternative zu100%.In meinem speziellen Fall wollte ich eine horizontal scrollbare Leiste neben einer Spalte mit fester Breite platzieren. Da die Verwendung von
100%weiterhin Probleme bereitete, verwendete ichcalc(), um die Breite der Spalte vom gesamten Viewport abzuziehen:calc(100vw - 470px).Ich musste
overflow-x: hiddenundoverflow-y: autoverwenden, um die Scrollleisten in Chrome Android zu entfernen, und leider entfernt dies auch das Momentum-Scrolling in Safari iOS. Ich füge -webkit-overflow-scrolling: touch hinzu und Safari iOS erhält das Momentum-Scrolling zurück. Es ist großartig, es hat mir Stunden und Stunden erspart, danke Chris!schöner Artikel…..
Im ersten Fall, wo ich nicht möchte, dass das Bild aus dem div herausragt und sichtbar ist, funktioniert overflow: hidden für Safari nicht. Kennen Sie eine Umgehung dafür? Ich habe gelesen, dass Safari einen Bug mit Position und overflow hat. Ich habe die Position vollständig entfernt, trotzdem gibt es mir das gleiche Problem, können Sie mir eine Umgehung vorschlagen, die Sie für Safari haben?
Beispielcode
Gibt es eine Möglichkeit, ein position:fixed-Objekt in seinem Container auf Mobilgeräten scrollen zu lassen?
HINWEIS: Sie können keine overflow:auto oder overflow:scroll auf einem
<fieldset>-Tag verwenden, zumindest nicht in Firefox. Dasselbe gilt wahrscheinlich auch in anderen Browsern. Platzieren Sie Ihre overflow-CSS stattdessen auf einem<div>.Meine Erfahrung ist, dass Sie es können, aber warum sollten Sie es wollen... Der Sinn eines Fieldsets ist meiner Meinung nach die Verwendung in Verbindung mit einer Legende, bei der Ihr Legende beim Scrollen auf Ihren Text überlappt und schlecht aussieht. Ich stimme Ihnen zu, dass die Verwendung von Overflow-Optionen in diesem Szenario auf einem Div innerhalb des Fieldsets verwendet werden sollte, und wenn Sie keine Legende verwenden möchten, dann verwenden Sie ein Div mit einem Rahmen anstelle eines Fieldsets.
Ja, es wäre nicht unbedingt eine gute Idee, es zuerst zu tun. Ich wollte das hier nur dokumentieren, da es einige Kopfzerbrechen bereitete, um herauszufinden, was vor sich ging, und ich wollte nicht, dass andere den gleichen Fehler machen.
Natürlich können ähnliche Dinge für
<td>-Tags passieren... d.h. es gibt einige Stilregeln, die für bestimmte Tags nicht funktionieren (überhaupt nicht, oder nicht wie erwartet, oder sich in verschiedenen Browsern unterschiedlich verhalten), in welchem Fall das Einpacken eines<div>im Inneren und dessen Styling stattdessen oft die einfachste Lösung ist.Sehr informativ.. Ich werde die einfache Sprach Erklärung von komplexen Technik Sachen sicher schätzen..
Gibt es nicht eine Möglichkeit, bei der das Bild aus dem obigen Beispiel perfekt in die angegebene Breite des Containers skaliert wird, genau wie bei einem responsiven Bild, ohne dass Teile davon abgeschnitten werden?
Wenn es ein Hintergrundbild ist, können Sie die Größe auf contain setzen.
...und wenn es ein Element ist, verwenden Sie einfach die Deklaration max-width: 100%;.
Großartig!!! Es hat mir geholfen..
Danke fürs Schreiben!
Schnelle Frage, ich verwende statische Höhen und Breiten, um große klickbare Boxen in einem responsiven Design zu erstellen. Ich habe die Eigenschaften auf relative Positionierung mit overflow: hidden gesetzt, damit sie gut ausgerichtet sind, aber in Safari funktioniert overflow: hidden nicht. Haben Sie Ideen, wie es funktioniert?
In der Zwischenzeit werde ich den von Ihnen empfohlenen Clearfix verwenden und die Elemente floaten. Danke!
Um die horizontalen Scrollleisten zu entfernen, wenn Sie sie nicht benötigen, denke ich, können Sie
overflow-y: scroll; overflow-x: hidden;verwenden.Es behält die vertikalen Scrollleisten bei und entfernt die horizontalen.
Wie ändere ich die Farbe der Scrollleisten?
Wie mache ich Scrollleisten sowohl auf Android als auch auf iOS sichtbar...
großartig
Toller Artikel! Ich habe derzeit einige Probleme unter Android 4.4.2 (Samsung Tab), wo ich die Überlaufbehälter nicht scrollen kann. Ihre Demo funktioniert auf demselben Gerät gut. Auf meinem Handy (Android) und anderen Testgeräten (iPhone, iPad) funktioniert es einwandfrei.
Weiß jemand von einem aktuellen Android-Problem mit 'overflow: scroll' oder 'overflow: auto'? Oder haben andere die gleichen Probleme.
Kann den Entwicklungscode nicht bereitstellen, aber ich glaube, dass all das relevante CSS vorhanden ist.
Jede Hilfe wäre großartig!
Hallo, ich habe ein Problem mit overflow-x:hidden und overflow-y:visible. Hier ist ein Beispiel: https://jsfiddle.net/31mkqbwp/2/ Warum gibt es immer eine vertikale Scrollleiste, wenn ich overflow-x:hidden auf #container setze und overflow-y:visible nicht funktioniert?
Hallo, ich versuche, mehrere Auswahlmöglichkeiten in einem div hinzuzufügen, das overflow:scroll hat, aber die Dropdown-Liste befindet sich innerhalb des div und sollte außerhalb des div erscheinen. Können Sie mir bitte vorschlagen, wie ich das Problem lösen kann?
https://jsfiddle.net/irshadmb/a3z5ccax/
Overflow-Tag funktioniert nicht?!
Ich möchte das gesamte div-Element von 200 auf 200 so erstellen.
http://weedbeats.com/resident-djs/
Wenn man mit der Maus über die Bilder der Künstler fährt…
HTML-CODE
”’
Hallo
200X200
”’
CSS-CODE
”’#a
{
width: 200px;
height: 200px;
overflow: hidden;
hintergrundfarbe: #cc4400;
}
#b
{
position: absolute;
height: 100px;
width: 200px;
padding: 0;
margin: 0;
transform: translatey(200px);
hintergrundfarbe: #404040;
transition-property: all;
transition-duration: 1s;
}
#c
{
position: absolute;
breite: inherit;
höhe: inherit;
margin: 0;
}
#a:hover > #b
{
transform: translatey(100px);
hintergrundfarbe: 606060;
}”’
HTML-CODE
Hallo
200X200
https://wdtime.ru/css/overflow-css-perepolnenie-elementa
IOS Safari scrollt nicht. Hier ist der Code unten. Weiß jemand, was das Problem ist.
Hallo, danke für diesen Artikel, aber ich möchte wissen, wie man overflow nur für eine Seite eines Elements sichtbar macht, z. B. nur für oben oder links.
Vielen Dank. Sehr anschaulich. Ich habe es ein paar Mal benutzt, aber keine explizite Erklärung bekommen. Nochmals vielen Dank
Besteht die Chance, dass ein Abschnitt hinzugefügt wird, der den Unterschied zwischen den Werten
hiddenundcliperklärt?