Ich versuche, ein Div in einem Container-Div zu erhalten, um die Container-Divs-Höhe zu skalieren, wenn das Div im Container größer wird. Wenn die Höhe des Div innerhalb des Containers höher als der Container selbst wird, bewegt es sich nur über den Boden des Containers hinaus. Ich möchte, dass der Container mit dem enthaltenen Div skaliert. Wie mache ich das in CSS?Skalierung eines Container-Div mit der enthaltenen divs-Höhe
Antwort
Sie müssen nur Eigenschaft height percent wie geben:
percent { display:block:height:100%; } as your div stands in html:
<div class="percent"></div>
Graham. Was Sie beschreiben, ist das Standardverhalten eines DIV oder eines beliebigen Blockelements. z.B. für das folgende HTML:
<style type="text/css">
dl { margin: 0; padding: 0;}
#container {
background-color: blue;
padding: 5px 5px 5px 5px;
}
#inner {
background-color: red;
}
</style>
<div id="container">
<div id="inner">
<dl>
<dt>Stuff</dt>
<dd>Blah blah blah</dd>
<dt>Foobar</dt>
<dd>Bazquux</dd>
</dl>
</div>
</div>
Sie erhalten die folgende HTML gerendert erhalten:
Basic Div http://c0180871.cdn.cloudfiles.rackspacecloud.com/normal.png
Die Situation, die Sie beschreiben, wenn der Behälter div das innere div nicht enthält erweitern tritt auf, wenn Sie floated das innere Div. Floating bricht definitionsgemäß ein Blockelement aus den Beschränkungen seines enthaltenen Elements heraus. Anwenden von "float: left;" zu Ihrem #inner Elemente gibt die folgenden Möglichkeiten:
alt text http://c0180871.cdn.cloudfiles.rackspacecloud.com/floated.png
Die Lösung ist ein Blockebene-Element an der Unterseite des Behälter div hinzufügen, dass der Floats löscht. Dies führt dazu, dass das umschließende div um dieses neue Block-Level-Element und damit auch um Ihre floated-Elemente gewickelt wird.
z.B.
<style type="text/css">
dl { margin: 0; padding: 0;}
#container {
background-color: blue;
padding: 5px 5px 5px 5px;
}
#inner {
background-color: red;
float: left;
}
</style>
<div id="container">
<div id="inner">
<dl>
<dt>Stuff</dt>
<dd>Blah blah blah</dd>
<dt>Foobar</dt>
<dd>Bazquux</dd>
</dl>
</div>
<div style="clear: both;"></div>
</div>
Dies gibt die Ausgabe identisch mit dem ersten Bild.
Offensichtlich kann dies eine langweilige Sache sein, um den Boden Ihrer Container divs hinzuzufügen, wenn Sie eine Menge Floaten tun.
Mit CSS2 Sie dies mit einer einfachen Klassendefinition (und ein Hack für IE natürlich) tun können:
<style type="text/css">
dl { margin: 0; padding: 0;}
#container {
background-color: blue;
padding: 5px 5px 5px 5px;
}
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
* html .clearfix {height: 1%;}
#inner {
background-color: red;
float: left;
}
</style>
<div id="container" class="clearfix">
<div id="inner">
<dl>
<dt>Stuff</dt>
<dd>Blah blah blah</dd>
<dt>Foobar</dt>
<dd>Bazquux</dd>
</dl>
</div>
</div>
Fügen Sie einfach die clearfix Klasse zu jedem Ihrer Container Divs, die schwammen Elemente enthalten. Beachten Sie, dass "* html" der von IE benötigte Hack ist.
einfach
overflow: auto;
an der äußeren div hinzuzufügen.
Wenn Sie "skalieren", wie in einfach nur erweitern, vielleicht lese ich Ihre Beschreibung als das Container-Div mit einer Höhe von, sagen wir, 500px, und die enthaltenen divs schieben diese mehr heraus, wenn sie zu groß werden. In diesem Fall können Sie vielleicht stattdessen min-height verwenden?
min-height: 500px;
Wenn Sie meinen, „Skala“, wie er in den Container div 500x500px ist, enthielt das nimmt eine Anfangshöhe von 200px bis die mit mehr Inhalt zu 400px erweitert, die den Behälter div drückt auf 1000x1000px (ähnlich ein-/Vergrößerung), dann könnte das komplizierter sein.
- 1. Skalierung eines einzelnen Bildes mit verschiedenen Skalierungsfaktoren
- 2. Python - Skalierung eines Abschnitts eines Arrays und nicht der Rest
- 3. Skalierung eines SVG in Java
- 4. Skalierung der Bildqualitätsreduktion
- 5. Ändern der vom Zeiger enthaltenen Adresse mit der Funktion
- 6. Skalierung der Y-Achse mit kleinen Zahlen
- 7. Umgang mit Strömung während der Skalierung rabbitmq
- 8. Bei der Skalierung den Radius eines runden Rechtecks beibehalten
- 9. unproportionale Skalierung mit Stoff
- 10. Komprimieren eines Byte-Array-Bilds ohne Skalierung mit .Net C#
- 11. PCA Skalierung mit ggbiplot
- 12. Skalierung und Positionierung mit Tweenlite
- 13. image Skalierung der Picture Box
- 14. So bestellen Sie mit der enthaltenen Modelleigenschaft in LoopBack JS
- 15. Scrolling eines in einem ScrollView enthaltenen ListView deaktivieren
- 16. Graue Skalierung der gesamten Ansicht
- 17. Erstellen eines NSData-Objekts aus einer enthaltenen Datei
- 18. Fehler bei der erneuten Bereitstellung der VM-Skalierung mit ARM
- 19. Schriftgrößenwert Skalierung mit Browser Zoom
- 20. Scene2D Button Skalierung mit libgdx
- 21. Skalierung statsd mit mehreren Servern
- 22. ImageView mit abgerundeten Ecken nach der Skalierung mit ScaleType.CenterCrop
- 23. MySql horizontale Skalierung mit PHP
- 24. Skalierung der Vorschaubilder auf der Fenstergröße
- 25. Auto-Skalierungsproblem: Skalierung mit Zeichenanzahl
- 26. SignalR Skalierung mit Azure EventHub
- 27. DataGridView Skalierung
- 28. Kosten der Skalierung Rails vs Kosten der Skalierung PHP vs Python Frameworks
- 29. Skalierung der y-Achse ggplot (geom_bar)
- 30. Ermitteln der Skalierung in Metern pro Pixel
Dies geht nicht auf sein Problem, was unglücklich ist, weil es scheint, dass Sie ziemlich viel Mühe in die Antwort stecken. Setzen Sie eine Höhe von 500px auf #container und Sie werden feststellen. –
Nicht sicher, ich verstehe sein Problem so gut wie Sie dann. Fragen ohne Code = offen für Interpretation. – hobodave
Meine persönliche Lieblingslösung für dieses Problem ist das Hinzufügen eines Clearing-Elements am Ende Ihrer floated-Elemente. Wenn Sie
direkt hinzufügen, bevor Sie Ihren Container beenden, der seine Höhe korrekt festlegen wird. Sie müssen keine CSS-Hacks verwenden, fügen Ihrem HTML jedoch zusätzliche Elemente hinzu. – dmertl