2017-11-27 4 views
1

Wie kann ich Flexbox-Kinder vertikal an die Oberkante jeder Zeile ausrichten?Flex-Kinder nach oben ausrichten

HTML:

#container { 
 
    align-items: flex-start; 
 
    align-content: flex-start; 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    justify-content: space-between; 
 
} 
 
.child { 
 
    margin: auto; 
 
    border: 1px dotted #CCC; 
 
} 
 
img, h3 { 
 
    width: 160px; 
 
}
<div id="container"> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>The quick brown fox jumps over the lazy dog</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
</div>

Demo: https://codepen.io/anon/pen/GOBzOp

Was ich sehe, ist this aber ich will es wie margin:auto von this

+0

Entfernen Sie einfach die 'Marge : auto 'von' .child', weil du es nicht brauchst. – VXp

Antwort

2

Änderungaussehen 210 bis margin: 0px auto.

-1

können Sie versuchen, wie

.child { 
    vertical-align: baseline; //either of them 
    margin: 0px auto; // any one 
} 
+0

Vielleicht sollten Sie nachlesen, welche Eigenschaften mit Flex-Elementen arbeiten ... 'vertical-align' ist nicht einer von ihnen – LGSon

+0

möglicherweise sollten Sie dies auf seinem Projekt versuchen https://codepen.io/anon/pen/GOBzOp –

+0

Ich muss nicht, ich kenne den Rand: 0px auto; 'Arbeit und' vertikale-Ausrichtung: Baseline; 'nicht ... und ich habe nicht abgestimmt, stattdessen habe ich versucht, hilfreich zu sein, mit meinem ersten Kommentar, damit Sie die Antwort vor dem Abstimmen korrigieren können. – LGSon

1

justify-content: space-around; zu #container id Geben statt justify-content: space-between; und margin: auto;-.child Klasse entfernen.

#container { 
 
    align-items: flex-start; 
 
    align-content: flex-start; 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    justify-content: space-around; 
 
} 
 
.child { \t 
 
    border: 1px dotted #CCC; 
 
} 
 
img, h3 { 
 
    width: 160px; 
 
}
<div id="container"> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>The quick brown fox jumps over the lazy dog</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
    <div class="child"> 
 
    <img src="http://via.placeholder.com/160x160"> 
 
    <h3>Title</h3> 
 
    </div> 
 
</div>

0

Eine einfache Lösung wäre margin: auto;-margin: 0 auto; sich ändern diese die Box automatisch vertikal zentralisieren verhindern, aber ihre horizontale Ausrichtung beibehalten, etwa so:

.child { 
    border: 1px dotted #CCC; 
    margin: 0 auto; 
}