Zwei divs Inline-Block, warum bleiben sie nicht nebeneinander?

8

Ich habe zwei Divs erstellt und möchte, dass sie nebeneinander bleiben, aber man geht immer runter, auch wenn sie angezeigt werden: Inline-Block. Was ist falsch? Ich verstehe es nicht.

%Vor% %Vor%
    
MeV 13.07.2015, 17:25
quelle

4 Antworten

8

Problem

Ohne Angabe einer Breite wird die Breite des Inline-Blocks automatisch durch seinen Inhalt bestimmt. In Ihrem Fall enthält der rote Block eine lange Linie, die (fast) den gesamten verfügbaren Platz ausfüllt. Der blaue Block ist breiter als der Raum, der vom roten Block zur Verfügung steht, sodass er in die nächste Zeile übergeht.

Lösung 1: Festlegen einer Breite für beide Elemente

Im folgenden Ausschnitt erhalten beide Blöcke eine Breite. Sie können eine Pixelbreite angeben, weil Sie auch die Containergröße kennen, aber Prozentsätze funktionieren auch, vorausgesetzt, sie addieren sich zu 100%, nicht mehr.

Beachten Sie, dass ich den HTML-Code auch etwas ändern musste, um die Leerräume zwischen ihnen zu entfernen. Dies ist ein häufiger Fehler bei der Wahl dieser Lösung.

%Vor% %Vor%

Lösung 2: Zeigen Sie die Elemente als Tabellenzellen in einer Zeile an

Alternativ können Sie sie wie eine Tabellenzeile verhalten. Dies hat den Vorteil, dass ihre Höhe auch übereinstimmt, und dass Sie leicht eine von ihnen eine Breite und die andere nicht geben können. Außerdem haben Sie nicht das Problem mit Leerzeichen zwischen Elementen, das Sie lösen müssen, wenn Sie die erste Lösung verwenden.

%Vor% %Vor%
    
GolezTrol 13.07.2015, 17:31
quelle
5

Der display:inline-block bewirkt, dass beide Elemente in derselben Zeile bleiben , wenn dafür genügend Platz vorhanden ist . Andernfalls wird die Linie unterbrochen.

Es gibt viele Lösungen, die hier funktionieren würden, aber lassen Sie uns einfach denken ...

Wenn Sie sowohl für den Container als auch für das Divisionsfeld "b" eine feste Breite definiert haben, legen Sie auch eine feste Breite für das Divisor "a" fest, wobei 180px noch vorhanden ist.

%Vor% %Vor%
    
LcSalazar 13.07.2015 17:33
quelle
1

Ihre inline-block -Elemente füllen den gesamten horizontalen Raum aus, wenn sie genügend Inhalt haben und andere Elemente darunter schieben. Eine Möglichkeit, dies zu beheben, wäre die Verwendung von flexbox.

%Vor% %Vor%
    
Steve Sanders 13.07.2015 17:30
quelle
0

Da der Text innerhalb von div mit der Klasse 'a' relativ zur div-Größe groß ist, nimmt er die gesamte Containerbreite, indem er dieser div eine feste Breite kleiner als die Containerbreite entweder fest oder um % gibt divs passen nebeneinander.

BEARBEITEN

%Vor% %Vor%
    
KAD 13.07.2015 17:30
quelle

Tags und Links