Hier ist der HTML:
<div id="outer">
<div id="inner"></div>
Test
</div>
Und hier ist das CSS:
#inner {
float: left;
height: 100%;
}
Bei der Überprüfung mit den Chrome-Entwicklertools erhält der innere Teil eine Höhe von 0 Pixel.
Wie kann ich erzwingen, dass es 100% der Höhe des übergeordneten Divs beträgt?
Antworten:
Damit die
#outer
Höhe auf dem Inhalt basiert und die Höhe darauf basiert, müssen#inner
beide Elemente absolut positioniert sein.Weitere Details finden Sie in der Spezifikation für die Eigenschaft css height ,
#inner
müssen jedoch die#outer
Höhe ignorieren, wenn#outer
die Höhe istauto
, es#outer
sei denn, sie ist absolut positioniert. Dann ist die#inner
Höhe 0, es sei denn#inner
, sie ist absolut positioniert.Wenn Sie jedoch
#inner
absolut positionieren , wird einefloat
Einstellung ignoriert. Sie müssen daher eine Breite für#inner
explizit auswählen und einen Auffüllpunkt hinzufügen#outer
, um den von mir vermuteten Textumbruch zu fälschen. Im Folgenden ist die Polsterung von#outer
beispielsweise die Breite von#inner
+3. Praktischerweise (da der springende Punkt darin bestand, die#inner
Höhe auf 100% zu bringen) ist es nicht erforderlich, Text darunter zu wickeln#inner
, sodass dies so aussieht, als würde#inner
es schweben.Ich habe meine vorherige Antwort gelöscht, da sie auf zu vielen falschen Annahmen über Ihr Ziel beruhte.
quelle
HTML/CSS
:)Für die Eltern:
Sie sollten einige Präfixe hinzufügen http://css-tricks.com/using-flexbox/
Bearbeiten: Der einzige Nachteil ist IE wie gewohnt, IE9 unterstützt Flex nicht. http://caniuse.com/flexbox
Edit 2: Wie @toddsby erwähnt, align Artikel ist für Eltern und sein Standardwert ist tatsächlich strecken . Wenn Sie einen anderen Wert für das Kind wünschen, gibt es die Eigenschaft align-self.
Bearbeiten 3: jsFiddle: https://jsfiddle.net/bv71tms5/2/
quelle
align-items: stretch;
ist nicht erforderlich, da dies der Standardwert ist. Es sollte auch für den Elternteil und nicht für das Kind definiert werden.Solange das übergeordnete Element positioniert ist, können Sie die Größe des untergeordneten Elements auf 100% einstellen. Für den Fall, dass Sie nicht möchten, dass der Elternteil absolut positioniert ist. Lassen Sie mich weiter erklären:
quelle
position:absolute
(die den Stil einer Site beeinträchtigen könnte)Solange Sie keine Versionen von Internet Explorer vor IE8 unterstützen müssen, können Sie Folgendes verwenden
display: table-cell
:HTML:
CSS:
Dadurch wird jedes Element mit der
.inner
Klasse gezwungen , die volle Höhe seines übergeordneten Elements einzunehmen.quelle
display: table-cell;
Element schwebt, füllt es nicht mehr die Höhe seines Containers? Mir muss etwas fehlen, denn es ist deine eigene Frage ...?Ich habe ein Beispiel zur Lösung Ihres Problems gemacht.
Sie müssen einen Wrapper herstellen, ihn schweben lassen, dann Ihren Div absolut positionieren und ihm 100% Höhe geben.
HTML
CSS:
Erläuterung: Die .right div ist absolut positioniert. Das bedeutet, dass seine Breite und Höhe sowie die oberen und linken Positionen basierend auf dem ersten übergeordneten Div berechnet werden, das NUR dann absolut oder relativ positioniert ist, wenn die Eigenschaften für Breite oder Höhe explizit in CSS deklariert sind. Wenn sie nicht explizit deklariert sind, werden diese Eigenschaften basierend auf dem übergeordneten Container (.right-wrapper) berechnet.
Daher wird die 100% -Höhe des DIV basierend auf der endgültigen Höhe des Containers berechnet, und die endgültige Position der rechten Position wird basierend auf dem übergeordneten Container berechnet.
quelle
.right
Inhalt der.left
Spalte kürzer als der Inhalt der Spalte ist. Wenn Sie dies beispielsweise für eine Komponente verwenden, in der die.left
Spalte einen Inhalt unterschiedlicher Größe enthält und in der rechten Spalte lediglich ein Pfeil zu einer Detailseite angezeigt wird, funktioniert diese Lösung gut. +1 dafürHier ist es einfacher, dies zu erreichen:
Dank @Itay in Floated Div, 100% Höhe
quelle
Wenn Sie bereit sind, ein wenig jQuery zu verwenden, ist die Antwort einfach!
Dies funktioniert gut, um ein einzelnes Element auf eine Seite mit 100% Höhe des übergeordneten Elements zu verschieben, während andere schwebende Elemente, die normalerweise umlaufen würden, auf einer Seite gehalten werden.
Hoffe, das hilft anderen jQuery-Fans.
quelle
Dies ist ein Codebeispiel für ein Rastersystem mit gleicher Höhe.
Oben ist das CSS für äußere Div
Oben ist das innere Div
Hoffe das hilft dir
quelle
Das hat mir geholfen.
Ändern Sie rechts: und links:, um die bevorzugte #inner-Breite festzulegen.
quelle
Ein ähnlicher Fall, wenn Sie mehrere untergeordnete Elemente mit derselben Höhe benötigen, kann mit flexbox gelöst werden:
https://css-tricks.com/using-flexbox/
Set
display: flex;
für Eltern undflex: 1;
für Kind - Elemente, sie alle die gleiche Höhe haben.quelle
Versuchen
Weitere Optionen finden Sie unter: Wie verhindern Sie, dass Eltern schwebender Elemente zusammenbrechen?
quelle