2016-06-18 19 views
-1

Hoffentlich ist dies keine ungelöste Aufgabe, aber ich versuche, eine unbekannte (ish) Anzahl von divs innerhalb eines Containers vertikal zu rechtfertigen.Inhalt vertikal rechtfertigen

Jedes div sollte gleiche Abstände voneinander haben und zusätzlich den gleichen Abstand von den Kanten. (Angenommen, der letzte Teil kann mit Hilfe von Geisterelementen davor und danach ausgeführt werden)

Die divs füllen jeweils die Breite des Containers, und der Container hat eine festgelegte Höhe, aber die Anzahl der Elemente im Container ist unbekannt.

Ich gehe davon aus, dass es mit Flexbox zu einem gewissen Grad gemacht werden kann, aber in meinen bisherigen Versuchen nicht erfolgreich waren.

+0

@Lowkase, I Ich habe verschiedene Lösungen ausprobiert, aber das Hauptproblem war, dass ich nicht wusste, wie ich anfangen sollte. – Rockster160

+1

Es gibt mehrere Möglichkeiten: 'justify-content: space-around' /' space-between', 'auto' Ränder und sogar' Pseudo-Elemente' auf dem Flex-Container. Alle hier abgedeckt: http://StackOverflow.com/a/33856609/3597276 –

Antwort

0

Wie immer, egal wie lange ich suche, finde ich die Antwort erst unmittelbar nachdem ich die Frage gestellt habe. : D

Für diejenigen neugierig, oder für meine eigene Zukunft Referenz: Flexbox die rechtfertigen nicht funktioniert, müssen Sie nur noch ein paar Optionen:

HTML:

<div id="outer-container"> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
    <div class="inner-element"></div> 
</div> 

CSS:

#outer-container { 
    height: 250px; 
    width: 200px; 
    background: red; 
    display: flex; 
    justify-content: space-around; 
    flex-direction: column; 
} 

.inner-element { 
    width: 200px; 
    height: 10px; 
    background: blue; 
} 

https://css-tricks.com/almanac/properties/j/justify-content/

https://jsfiddle.net/WW3bh/

1

Ja, Flexbox ist der einfachste Weg, es zu tun.

auf dem Behälterelement:

.container { 
    display: flex; 
    flex-direction: column; 
    justify-content: space-between; 
} 

auf das Kind-Elemente:

.container div { 
    flex: 1; 
    width: 100% 
} 

für den Abstand zwischen den Elementen, fügen nur Polsterung an den Behälter und unteren Ränder um die Kinder.

Der Stil würde wie folgt aussehen:

.container { 
    /* Same as above, and */ 
    padding: 20px; 
} 

.container div { 
    /* Same as above, and */ 
    margin-bottom: 20px; 
} 

.container div:last-of-type{ 
    margin-bottom: 0; 
    /* So that spacing is even at bottom and top of container */ 
} 

(ich dies eingeben, wenn Sie Ihre Antwort geschrieben, so dass ich es trotzdem up)

Fiddle

Verwandte Themen