Ich habe diese verschachtelten Divs und ich brauche den Hauptcontainer zum Erweitern (in der Höhe), um die DIVs darin aufzunehmen
<!-- head -->
...
<!-- /head -->
<body class="main">
<div id="container">
<div id="header">
<!--series of divs in here, graphic banner etc. -->
</div>
<div id="main_content"> <!-- this DIV _should_ stretch to accommodate inner divs -->
<div id="items_list" class="items_list ui-sortable">
<div id="item_35" class="item_details">
</div>
<div id="item_36" class="item_details">
</div>
<div id="item_37" class="item_details">
</div>
<!-- this list of DIVs "item_xx" goes on for a while
each one representing a photo with name, caption etcetc -->
</div>
</div>
<br class="clear"/>
<div id="footer">
</div>
</body>
</html>
CSS ist dies:
* {
padding: 0;
margin: 0;
}
.main {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #4c5462;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.main #container {
height: auto;
width: 46em;
background: #4c5462;
margin: 0 auto;
border: 0px solid #000000;
text-align: left;
}
.main #main_content {
padding: 5px;
margin: 0px;
}
#items_list {
width: 400px;
float: left;
}
.items_list {
width: 400px;
float: left;
}
.item_details {
margin-top: 3px;
margin-bottom: 3px;
padding: 3px;
float: left;
border-bottom: 0.5px solid blue;
}
Das Problem, das ich habe, ist, dass #main_content
es sich nicht ausdehnt, um alle inneren Divs aufzunehmen, mit dem Ergebnis, dass sie immer wieder vor dem Hintergrund laufen.
Wie kann ich dieses Problem unter Berücksichtigung des obigen Szenarios lösen?
<strong>Edited</strong>$Reason_for_revising_question...
Möglicherweise müssen Sie den Fragentitel ändern, um die Änderungen widerzuspiegeln, wenn sich der Fokus wesentlich ändert oder ergänzt. =)div
Tag auch nie mit geschlossenid='container'
. Das könnte einige Probleme verursachen..clear
Klasse. Hast du es vergessen oder ist es in deinem Originalcode? Die.clear
Klasse dazubr
ist sehr wichtig, wie @jennyfofenny in ihrer Antwort erwähnt.Antworten:
Sie müssen a erzwingen,
clear:both
bevor das#main_content
div geschlossen wird. Ich würde wahrscheinlich das<br class="clear" />;
in die#main_content
div verschieben und das CSS so einstellen, dass:Update: Diese Frage hat immer noch einiges an Verkehr, daher wollte ich die Antwort mit einer modernen Alternative aktualisieren, indem ich einen neuen Layoutmodus in CSS3 namens Flexible Boxen oder Flexbox verwende :
Die meisten modernen Browser unterstützen derzeit Flexbox- und Ansichtsfenstereinheiten. Wenn Sie jedoch die Unterstützung für ältere Browser beibehalten müssen, überprüfen Sie die Kompatibilität für die jeweilige Browserversion.
quelle
Versuche dies:
overflow: auto;
Es hat bei meinem Problem funktioniert.
quelle
display: block;
mitFügen Sie Folgendes hinzu:
zu Ihrem Hauptdiv. Beseitigt die Notwendigkeit für das Extra
<br />
für das Klare.quelle
Alternativ können Sie dies auch versuchen, was in einigen Situationen nützlich sein kann
jsFiddle
quelle
Ich würde nur verwenden
in deinem div. Ja, ich weiß, dass ich etwas spät dran bin, aber ich dachte, das könnte jemandem helfen, wie es mir geholfen hätte, wenn es hier gewesen wäre.
quelle
height: auto;
bewirkt, dass alle Elemente unten nach oben verschoben werden. Mit dieser Eigenschaft in meinem Hauptinhaltsbereich wird die Fußzeile meiner Seite nach oben verschoben, sodass sie die Kopfzeile berührt und meinen Inhaltsbereich überlappt.Folgendes sollte funktionieren:
quelle
Sehr einfacher Weg
Auf Eltern DIV:
height: 100%;
Diese Arbeit für mich jedes Mal
quelle
Verwenden Sie das span-Tag, an das
display:inline-block
CSS angehängt ist. Sie können dann CSS verwenden und es auf viele Arten wie ein Div bearbeiten. Wenn Sie jedoch keinwidth
oder einschließen, wirdheight
es basierend auf seinem Inhalt erweitert und zurückgezogen.Ich hoffe, das hilft.
quelle
div
(anstelle von aspan
) verlassen, aberdisplay: inline-block
in meinem Fall immer noch gearbeitet (Chrom).Normalerweise denke ich, dass dies gelöst werden kann, indem eine
clear:both
Regel für das letzte untergeordnete Element von erzwungen wird#items_list
.Sie können entweder verwenden:
Wenn Sie eine dynamische Sprache verwenden, fügen Sie dem letzten Element, das in einer beliebigen Schleife generiert wurde, die die Liste selbst erstellt, eine zusätzliche Klasse hinzu, sodass Sie in Ihrem HTML-Code Folgendes erhalten:
und css
quelle
Dieses Problem tritt auf, wenn die untergeordneten Elemente eines übergeordneten Div schweben. Hier ist die neueste Lösung des Problems:
Schreiben Sie in Ihre CSS-Datei die folgende Klasse namens .clearfix zusammen mit dem Pseudo-Selektor : after
Fügen Sie dann in Ihrem HTML- Code die .clearfix- Klasse zu Ihrem übergeordneten Div hinzu. Zum Beispiel:
Es sollte immer funktionieren. Sie können den Klassennamen als .group anstelle von .clearfix aufrufen , da dadurch der Code semantischer wird. Beachten Sie, dass es nicht erforderlich ist, den Punkt oder sogar ein Leerzeichen im Wert von Content zwischen dem doppelten Anführungszeichen "" einzufügen. Auch Überlauf: auto; Möglicherweise wird das Problem behoben, es verursacht jedoch andere Probleme wie das Anzeigen der Bildlaufleiste und wird nicht empfohlen.
Quelle: Blog von Lisa Catalano und Chris Coyier
quelle
#main_content
Fügen Sie dem div eine float-Eigenschaft hinzu - es wird dann erweitert, um den float-Inhalt zu enthaltenquelle
Bevor Sie etwas tun, überprüfen Sie die CSS-Regeln mit:
Entfernen Sie, falls vorhanden, und benötigen Sie sie nicht.
quelle
Floated-Elemente belegen nicht den Platz innerhalb des übergeordneten Elements. Wie der Name schon sagt, schweben sie! Wenn also einem Element, dessen untergeordnete Elemente schwebend sind, explizit keine Höhe zugewiesen wird, scheint das übergeordnete Element zu verkleinern und Dimensionen des untergeordneten Elements nicht zu akzeptieren, auch wenn die angegebenen untergeordneten Elemente
overflow:hidden;
möglicherweise nicht auf dem Bildschirm angezeigt werden. Es gibt mehrere Möglichkeiten, um mit diesem Problem umzugehen:Legen Sie ein anderes Element unterhalb dem Floats mit
clear:both;
Eigentum oder Verwendungclear:both;
auf:after
dem Floats.Verwenden Sie
display:inline-block;
oderflex-box
anstelle vonfloat
.quelle
Sieht so aus
Die Bildschirmgröße wird als Minimum verwendet, und wenn der Inhalt erweitert wird, wächst er.
quelle
In CSS:
#clear_div{clear:both;}
Fügen Sie nach dem div-Tag des inneren div dieses neue folgende div hinzu
http://www.w3schools.com/cssref/pr_class_clear.asp : Weitere Informationen
quelle
Ich habe Bootstrap zu einem Projekt mit
section
Tags hinzugefügt , die ich auf 100% der Bildschirmhöhe festgelegt hatte. Es hat gut funktioniert, bis ich das Projekt ansprechbar gemacht habe. Zu diesem Zeitpunkt habe ich mir einen Teil von Jennyfofennys Antwort geliehen sodass mein Abschnittshintergrund mit dem Hintergrund des Inhalts übereinstimmte, wenn sich die Bildschirmgröße auf kleineren Bildschirmen änderte.Mein neues
section
CSS sieht so aus:Angenommen, Sie haben einen Abschnitt mit einer bestimmten Farbe. Wenn Sie bei Verwendung
min-height
die Breite des Abschnitts aufgrund eines kleineren Bildschirms verringern, wird die Höhe des Abschnitts vergrößert, der Inhalt bleibt innerhalb des Abschnitts und Ihr Hintergrund bleibt in der gewünschten Farbe.quelle
Haben Sie den traditionellen Weg versucht? Geben Sie die Höhe des Hauptbehälters an: auto
Ich habe das benutzt und es hat die meiste Zeit bei mir funktioniert.
quelle
Ich bin selbst bei einem Projekt darauf gestoßen - ich hatte einen Tisch in einem Div, der aus dem Boden des Div herauslief. Keine der Höhenkorrekturen, die ich versucht habe, hat funktioniert, aber ich habe eine seltsame Korrektur dafür gefunden, und das heißt, einen Absatz mit nur einem Punkt am unteren Rand des Divs einzufügen. Gestalten Sie dann die "Farbe" des Textes so, dass sie dem Hintergrund des Containers entspricht. Arbeitete ordentlich wie Sie möchten und kein Javascript erforderlich. Ein nicht unterbrechender Raum funktioniert nicht - und ein transparentes Bild auch nicht.
Anscheinend musste nur gesehen werden, dass sich unter der Tabelle einige Inhalte befinden, um sie zu dehnen und zu enthalten. Ich frage mich, ob das für irgendjemanden anderen funktionieren wird.
Dies ist die Art von Dingen, die Designer dazu bringen, auf tabellenbasierte Layouts zurückzugreifen - die Zeit, die ich damit verbracht habe, dieses Zeug herauszufinden und es browserübergreifend kompatibel zu machen, macht mich verrückt.
quelle
Ich habe es versucht und es hat funktioniert
quelle
Wenn Sie die jQuery-Benutzeroberfläche verwenden, haben sie bereits eine Klasse. Die Werke sind nur ein Zauber. Fügen
<div>
Sie unten in dem Div, mit dem Sie erweitern möchten, einheight:auto;
hinzu. Fügen Sie dann einen Klassennamen ui-helper-clearfix hinzu oder verwenden Sie dieses Stilattribut und fügen Sie es wie unten hinzu ::Fügen Sie dem klaren Div die jQuery UI-Klasse hinzu, nicht das Div, das Sie erweitern möchten.
quelle
Ich weiß, dass dies eine Art alter Thread ist, dies kann jedoch mit der
min-height
CSS-Eigenschaft auf saubere Weise erreicht werden. Deshalb lasse ich dies hier für zukünftige Referenzen:Ich habe eine Geige basierend auf dem hier veröffentlichten OP-Code erstellt: http://jsfiddle.net/U5x4T/1/. Wenn Sie Divs entfernen und hinzufügen, werden Sie feststellen, wie sich der Container vergrößert oder verkleinert
Die einzigen 2 Dinge, die Sie zusätzlich zum OP-Code benötigen, sind:
* Überlauf im Hauptcontainer (erforderlich für die schwimmenden Divs)
* CSS-Eigenschaft mit Mindesthöhe, weitere Informationen finden Sie hier: http://www.w3schools.com/cssref/pr_dim_min-height.asp
quelle
Anzeige hinzugefügt: Inline zum Div und es wurde automatisch (nicht das Scroll-Zeug), wenn der Höheninhalt größer wurde als die eingestellte Div-Höhe von 200px
quelle
Sie können das CSS-Rasterlayout verwenden . Die Unterstützung ist im Moment ziemlich groß : Überprüfen Sie sie auf caniuse .
Hier ist das Beispiel auf jsfiddle. Auch Beispiel mit Tonnen von Textmaterial.
HTML Quelltext:
CSS-Code:
quelle
Ich habe so ziemlich jeden der oben aufgeführten Vorschläge ausprobiert und keiner von ihnen hat funktioniert. "Display: table" hat mir jedoch geholfen.
quelle
Sie müssen nicht viel CSS verwenden, verwenden Sie einfach Bootstrap und verwenden Sie dann:
für das div, das gefüllt werden muss.
Sie können Bootstrap von hier bekommen
quelle