2016-08-02 22 views
1

Ich habe eine allgemeine, möglicherweise Anfänger Frage zu HTML.Positionierung divs in einem Container

#container { 
 
    height: 200px; 
 
    max-width: 600px; 
 
    border: 1px solid black; 
 
    margin: auto; 
 
    margin-top: 10px; 
 
} 
 
#item1 { 
 
    height: 100px; 
 
    max-width: 200px; 
 
    border: 1px solid red; 
 
} 
 
#item2 { 
 
    height: 100px; 
 
    max-width: 200px; 
 
    border: 1px solid blue; 
 
}
<div id="container"> 
 
    <div id="item1"></div> 
 
    <div id="item2"></div> 
 
</div>

Meine Frage ist, warum #item1 und #item2 divs untereinander geht im Gegensatz nebeneinander zu? Stimmt es nicht, dass es sich nicht mehr um Elemente auf Blockebene handelt, weil ich für sie eine festgelegte Breite angegeben habe? Warum sind sie innerhalb von #container nicht nebeneinander aufgereiht? Die #container hat mehr als genug Breite, um beide Elemente unterzubringen.

Hinweis: Dies ist ausschließlich für das Lernen/Neugier. Ich weiß, dass ich Ränder und Positionierung verwenden kann, um sie dort zu platzieren, wo ich möchte. Ich bin aber nur neugierig, warum es sich so verhält.

Danke.

+1

Sogar gesetzt, wenn Sie ihre Breiten, ihre Eigenschaft bleibt gleich wie Block. Sie müssen sie anzeigen lassen: Inline-Block, dann werden sie nebeneinander stehen wie Sie wollen –

+0

Mögliche Duplikate von [Was ist der Unterschied zwischen Anzeige: Inline und Anzeige: Inline-Block?] (Http://stackoverflow.com/questions/8969381/what-is-the-difference-between-display-inline-and-display-inline-block) – Vucko

Antwort

1

Div-Elemente sind Blockelemente, es sei denn, Sie legen die Anzeigeeigenschaft auf Inline oder Inline-Block fest, die nicht wie andere Inline-Elemente rechts ausgerichtet ist.

hinzufügen display: inline-block zu den css divs geben ihnen was sie wollen.

0

<div> Tag immer mit neuer Zeile beginnen, wenn Sie keine Frameworks wie Bootstrap oder andere verwenden. Wenn Sie mehrere Elemente in einer Zeile sehen möchten, fügen Sie css wie display: inline-block

0

hinzu. Bitte ersetzen Sie Ihre Klasse wie folgt.

#item1{ 
    height:100px; 
    max-width:200px; 
    border:1px solid red; 
    display:inline-block; 
} 
#item2{ 
    height:100px; 
    max-width:200px; 
    border:1px solid blue; 
    display:inline-block; 
} 
+0

Danke ich verstehe. Wenn ich das tue, bekomme ich ein bisschen Platz zwischen jedem div (# item1, # item2) warum ist das? – Zzgooloo

+0

kannst du mir irgendeinen Schnappschuss für dasselbe zeigen? –

+0

Es ist gelöst, es war wegen der Lücke im HTML-Code zwischen den divs. Ich hatte keine Ahnung, dass das das Ergebnis beeinflussen würde. – Zzgooloo

0

Der #container dh du Div hat eine Anzeigeeigenschaft von Block. Dies ist eine Standardeigenschaft, wenn Sie sie nicht auf etwas anderes setzen. In Ihrem Fall übernimmt das div diese Standardanzeigeeigenschaft.

Um # item1 und # item2 nebeneinander anzuzeigen, verwenden Sie einfach display: inline-block in Ihrem #container.

0

div ist der Standard-Block-Element. Ein Block-Level-Element beginnt auf einer neuen Linie und streckt sich so weit wie möglich nach links und rechts. Andere gängige Elemente auf Blockebene sind p und form, und in HTML5 gibt es neue Header, Fußzeilen, Abschnitte und mehr.

Auch wenn Sie Breite angeben, lassen andere Elemente nicht direkt daneben zu. Dies ist die Eigenschaft eines Blockebenenelements.

Verwenden Sie die CSS inline-block es wird die angegebene Breite oder Breite des Inhalts belegen.

https://developer.mozilla.org/en-US/docs/CSS/display

0

Die height des Behälters sollte die Summe der Höhen des Kindes divs und die Höhen der Grenzen der Kinder

dh sein., height of parent container = 100+ 100+ 1+ 1+ 1+ 1 = 204px

#container { 
height: 204px; 
} 
+0

auch bei Verwendung von Box-Sizing: Border-Box? – Zzgooloo

1

Sie haben zwei Möglichkeiten, wie Sie Blöcke horizontal zu platzieren: Anzeige Eigenschaft oder float Eigenschaft.

Es spielt keine Rolle, dass Sie die Breite Ihrer Elemente festgelegt haben. Sie werden weiterhin blockiert und vertikal angezeigt. Um dieses Verhalten zu ändern, verwenden Sie Sheet (beachten Sie, dass in beiden Fällen Breite, nicht max-width eingestellt werden sollte):

#container { 
    height: 200px; 
    max-width: 600px; 
    border: 1px solid black; 
    margin: auto; 
    margin-top: 10px; 
} 
#item1 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid red; 
    display: inline-block; 
} 
#item2 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid blue; 
    display: inline-block; 
} 

oder dies:

#container { 
    height: 200px; 
    max-width: 600px; 
    border: 1px solid black; 
    margin: auto; 
    margin-top: 10px; 
} 
#item1 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid red; 
    float: left; 
} 
#item2 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid blue; 
    float: left; 
} 
+0

Bei Verwendung von Float funktioniert es perfekt. Ich bin nur neugierig, warum gibt es eine kleine Lücke zwischen jedem Div bei der Verwendung von Inline-Block? – Zzgooloo

+0

Es ist wegen Zeilenumbruch in HTML-Code zwischen divs. Entfernen Sie den Zeilenumbruch und Sie werden keine Lücke sehen. Sie können auch negative ** margin-left ** verwenden. Auch Sie können ein paar Methoden finden, um diese Lücke in Google zu entkommen. Ich erinnere mich nicht an alle :-) –

+0

Richtig, ja ich war nur neugierig auf die Ursache, weil ich keine Ränder gesetzt hatte. Vielen Dank. – Zzgooloo