Wie halte ich zwei side-by-side-divs die gleiche Höhe?
Habe ich zwei divs nebeneinander. Ich möchte die Höhe von Ihnen werden die gleichen, und die gleichen bleiben, wenn einer von Ihnen ändert. Ich kann nicht herausfinden this one out wenn. Ideen?
Zu klären, meine verwirrende Frage, ich möchte beide Boxen immer die gleiche Größe, so dass, wenn einer wächst, denn der text ist in es, sollte der andere wachsen entsprechend die Höhe.
HTML:
<div style="overflow: hidden">
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
</div>
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!
</div>
</div>
- Wie hast du Sie "side by side"? Mit
float
? - Wollen Sie, dass, wenn einer von Ihnen ist größer, als der andere bleiben wird, die gleiche Höhe?
- Ein Beispiel, das nicht eine Lösung, sondern in einem bearbeitbaren Umgebung finden Sie hier: jsfiddle.net/PCJUQ
- Javascript: stackoverflow.com/questions/3275850/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Flexbox
Mit flexbox ist es eine einzige Erklärung:
CSS:
HTML:
Präfixe, die erforderlich sein können, für ältere Browser, siehe browser-Unterstützung.
flex-direction: column
: jsfiddle.net/sdsgW/1flex:1
als es hat Nebenwirkungen. Aber das ist immer noch der beste moderne Lösungflex: 1
wird das layout versuchen zu Spalten ausgleichen", alt. Sie können Breite pro Spalte: jsfiddle.net/sdsgW/64display:flex
auf die Reihe. Danke.Dies ist ein häufiges problem, die viele erlebt haben, aber glücklicherweise haben einige kluge Köpfe, wie Ed Eliot ' s auf seinem blog gebucht haben, deren Lösungen online.
Im Grunde, was Sie tun, machen beide divs/Spalten sehr hoch durch hinzufügen einer
padding-bottom: 100%
und dann "trick-the-browser" zu denken, sind Sie gar nicht groß mitmargin-bottom: -100%
. Es ist besser erklärt von Ed Eliot in seinem blog, die auch enthält viele Beispiele.CSS:
HTML:
overflow: hidden;
Eigenschaft.padding: 7px 10px
, wenn diepadding-bottom
- Eigenschaft auf 100% eingestellt ist? (PSoverflow:hidden
war auch für mich auf dierow
)Dies ist ein Bereich, wo die CSS hat eigentlich nie Lösungen — Sie sind unten, um mit
<table>
- tags (oder faken Sie mit dem CSS -display:table*
Werte), denn das ist der einzige Ort, wo eine "halten Sie eine Reihe von Elementen der gleichen Höhe" implementiert.Dies funktioniert in allen Versionen von Firefox, Chrome und Safari, Opera ab mindestens version 8 und im IE ab version 8.
table
statttable-row
?width
für deine divs, es sei denn, Sie fügendisplay: table
auf das übergeordnete element, die Durcheinander zu bringen.Mit Javascript
mithilfe von jQuery können Sie es tun, in eine super einfache ein-line-Skript.
Mit CSS
Dies ist ein wenig interessanter. Die Technik nennt sich Faux Columns. Mehr oder weniger Sie nicht tatsächlich legen die tatsächlichen Höhe identisch sein, aber Sie rig einige grafische Elemente, damit Sie Aussehen der gleichen Höhe.
Ich bin überrascht, dass niemand erwähnt hat das (sehr alt, aber zuverlässig) Absolute Spalten-Technik:
http://24ways.org/2008/absolute-columns/
Meiner Meinung nach, ist es weit überlegen, sowohl Faux Spalten und Eine Echte Layout-Technik.
Die Allgemeine Idee ist, dass ein element mit
position: absolute;
wird position gegen den nächsten übergeordneten element, dasposition: relative;
. Sie Strecke dann eine Spalte zu füllen, die 100% der Höhe der Zuweisung sowohl eintop: 0px;
undbottom: 0px;
(oder was auch immer Pixel/Prozentsätze, die Sie tatsächlich benötigen.) Hier ist ein Beispiel:Können Sie Jquery verwenden die Gleichen Höhen-Plugin zu erreichen, das Plugin macht alle div-der genau die gleiche Höhe wie die anderen. Wenn einer von Ihnen wächst und die anderen wachsen auch.
Hier ein Beispiel der Umsetzung
Hier ist der link
http://www.cssnewbie.com/equalheights-jquery-plugin/
Könnten Sie Faux Columns.
Im Grunde ist es verwendet ein background-image in einer mit DIV zu simulieren, die zwei gleiche-Höhe-DIVs. Mit dieser Technik, die auch ermöglicht Ihnen das hinzufügen von Schatten, abgerundete Ecken, benutzerdefinierten Rahmen oder andere funky Muster, um Ihre Container.
Funktioniert nur mit fester Breite Boxen obwohl.
Gut erprobt und funktioniert in jedem browser.
Gerade entdeckt diesen thread bei der Suche für diese Antwort. Ich habe gerade eine kleine jQuery-Funktion, hoffe das hilft, funktioniert wie ein Charme:
JAVASCRIPT
HTML
Diese Frage wurde 6 Jahre her, aber es ist immer noch würdig ist, geben Sie eine einfache Antwort mit flexbox layout heute.
Fügen Sie einfach die folgenden CSS-der Vater
<div>
ist, wird es funktionieren.Den ersten beiden Zeilen erklären, es wird so dargestellt, wie flexbox. Und
flex-direction: row
sagt Browser, Ihre Kinder werden in den Spalten angezeigt werden. Undalign-items: stretch
wird die Anforderung erfüllen, dass alle Kinder Elemente Strecken, um die gleiche Höhe hat es einer von Ihnen zu werden, höher.I'd like both boxes to always be the same size, so if one grows because text is placed into it, the other one should grow to match the height.
was nicht erwähnt wird in der akzeptierten Antwort...ich habe gerade einen Abschluss hier. Vielleicht sollte ich haben gesagt, es auf die akzeptierte Antwort?align-items: stretch;
flex Standard?Wenn dir nichts ausmacht eine der
div
s, ein Meister und diktieren die Höhe für beidediv
s gibt es diese:Geige
Egal, was der
div
auf der rechten Seite dehnen oder Stauchen&overflow entsprechend der Höhe derdiv
auf der linken Seite.Beide
div
s sein muss, unmittelbar untergeordneten Elemente eines Containers, und geben Sie die Spaltenbreite innerhalb es.Relevante CSS:
Ich mag die pseudo-Elemente, dies zu erreichen. Sie können es verwenden, wie hintergrund, den Inhalt und lassen Sie den Raum füllen.
Mit dieser Vorgehensweise können Sie die Ränder zwischen den Spalten, Ränder, etc.
CSS:
HTML:
Die CSS-grid-Weg
Die moderne Art, dies zu tun (was auch verhindert, dass zu erklären
<div class="row"></div>
-wrapper für alle zwei Elemente) wäre der Einsatz eines CSS-raster. Dies gibt Ihnen auch eine einfache Kontrolle über die Lücken zwischen Ihrem Element, Spalten/Zeilen.CSS:
HTML:
Ich habe versucht, fast alle der genannten Methoden oben, aber die flexbox-Lösung funktioniert nicht mit Safari, und der grid-layout-Methoden funktioniert nicht ordnungsgemäß mit älteren Versionen des IE.
Diese Lösung passt auf alle Bildschirme und ist cross-browser kompatibel:
Den oben genannten-Methode wird gleich von Zellen Höhe und für die kleineren Bildschirme wie Handy oder tablet, können wir die
@media
oben genannten Verfahren.können Sie jQuery verwenden um dies zu erreichen leicht.
CSS
jQuery
HTML
Muss jQuery
<div>
haben dynamische Inhalte. Der Grund, warum ich sage, ist, wenn<div class="right">
haben mehr Inhalt, dass das andere problem entsteht.Ich weiß, es ist schon eine lange Zeit, aber ich Teile meine Lösung trotzdem.
Dies ist ein jQuery-trick.
--- HTML -
---- CSS -
--- JQUERY
Den Fiddle
HTML
CSS
Dies ist ein jQuery-plugin, das setzt die Höhe für alle Elemente in der gleichen Zeile(durch aktivieren des Elements kompensiert.top). Also, wenn Ihr jQuery-array enthält Elemente aus mehr als einer Zeile(verschiedene offset.oben), jede Zeile wird eine getrennt, - Höhe, basierend auf dem element mit der maximalen Höhe in dieser Zeile.
};
Ich hatte das gleiche problem, so habe ich diese kleine Funktion mit jquery so jquery ist Teil jeder web-Anwendung ist heute.
Rufen Sie diese Funktion auf Seite bereit Ereignis
Ich hoffe, das funktioniert für Sie.
Kurzem stieß ich auf dieses und nicht wirklich wie die Lösungen, also versuchte ich, zu Experimentieren.
.mydivclass {inline-block; vertical-align: middle; width: 33%;}
Was ich hier getan habe, ist zu ändern Sie die Höhe auf min-height und gab ihm einen festen Wert. wenn einer von Ihnen ist verkleinert, die anderen bleiben gleich hoch. nicht sicher, ob dies ist, was Sie wollen