Ich habe so etwas:
<div style="width:100px;float:left">menu</div>
<div style="float:left">content</div>
beide schwimmer sind notwendig. Ich möchte, dass der Inhaltsbereich den gesamten Bildschirm abzüglich der 100 Pixel für das Menü ausfüllt. Wenn ich float nicht benutze, dehnt sich das div genau so aus, wie es sollte. Aber wie stelle ich das ein, wenn float eingestellt ist? Wenn ich etw wie benutze
style=width:100%
Dann erhält das Inhalts-Div die Größe des übergeordneten Div. Dies ist entweder der Body oder ein anderes Div, das ich ebenfalls ausprobiert habe. Daher passt es natürlich nicht direkt in das Menü und wird dann unten angezeigt.
Der am besten kompatible Weg, den ich dazu gefunden habe, ist nicht sehr offensichtlich. Sie müssen den Float aus der zweiten Spalte entfernen und
overflow:hidden
auf ihn anwenden . Obwohl dies jeden Inhalt zu verbergen scheint, der außerhalb des Divs liegt, zwingt es den Div tatsächlich dazu, in seinem übergeordneten Element zu bleiben.Dies ist ein Beispiel dafür, wie Sie Ihren Code verwenden können:
Ich hoffe, dies ist für alle nützlich, die dieses Problem haben. Ich fand, dass es für die Site, die ich erstellt habe, am besten funktioniert, nachdem ich versucht habe, es an andere Auflösungen anzupassen. Leider funktioniert dies nicht, wenn Sie auch
div
nach dem Inhalt ein rechtsschreibendes Element einfügen. Wenn jemand einen guten Weg kennt, um dies mit guter IE-Kompatibilität zum Laufen zu bringen, würde ich mich sehr freuen, das zu hören.Neue, bessere Option mit
display: flex;
Jetzt, da das Flexbox-Modell ziemlich weit verbreitet ist, würde ich empfehlen, es stattdessen zu verwenden, da es viel mehr
flex
Flexibilität beim Layout ermöglicht. Hier ist eine einfache zweispaltige Version wie das Original:Und hier ist eine dreispaltige mit einer mittleren Spalte mit flexibler Breite!
quelle
Lösung, ohne die Größe am Rand festzulegen
+1 für Merkuro, aber wenn sich die Größe des Floats ändert, schlägt Ihre feste Marge fehl. Wenn Sie rechts über CSS verwenden
div
, ändert sich die Größe mit der Größe auf dem linken Float. So ist es etwas flexibler. Überprüfen Sie die Geige hier: http://jsfiddle.net/9ZHBK/144/quelle
overflow: hidden
undoverflow auto
führen zu dem gleichen Verhalten. Ich denke auch, dass die Leute die Geige schätzen.Elemente, die verschoben werden, werden aus dem normalen Flusslayout entfernt, und Blockelemente wie DIVs erstrecken sich nicht mehr über die Breite ihres übergeordneten Elements. Die Regeln ändern sich in dieser Situation. Anstatt das Rad neu zu erfinden, finden Sie auf dieser Website einige mögliche Lösungen, um das zweispaltige Layout zu erstellen, nach dem Sie suchen: http://www.maxdesign.com.au/presentation/page_layouts/
Insbesondere das "Liquid Two-Column Layout".
Prost!
quelle
Dies ist eine aktualisierte Lösung für HTML 5, wenn jemand interessiert ist und nicht gerne "schwebt".
Die Tabelle funktioniert in diesem Fall hervorragend, da Sie die feste Breite für die Tabelle und die Tabellenzelle festlegen können.
http://jsfiddle.net/EAEKc/596/ Original-Quellcode von @merkuro
quelle
Diese Verwendung kann Ihr Problem lösen.
quelle
Und basierend auf
merkuro
der Lösung von sollten Sie Folgendes verwenden, wenn Sie die linke maximieren möchten:Wurde im IE nicht getestet, daher sieht es im IE möglicherweise kaputt aus.
quelle
Die akzeptierte Antwort mag funktionieren, aber ich mag die Idee, Ränder zu überlappen, nicht. In HTML5 würden Sie dies mit tun
display: flex;
. Es ist eine saubere Lösung. Stellen Sie einfach die Breite für ein Element undflex-grow: 1;
für das dynamische Element ein. Eine bearbeitete Version von merkuros fiddle: https://jsfiddle.net/EAEKc/1499/quelle
Hallo, es gibt einen einfachen Weg mit versteckter Überlaufmethode für das rechte Element.
quelle
Dies könnte funktionieren:
quelle