2016-08-07 25 views

Antwort

1

es aus der Strömung und die Position relativ zum Container.

.container { 
 
    height: 200px; 
 
    background: red; 
 
    display: flex; 
 
    align-items: center; 
 
    position: relative; 
 
} 
 
.meta { 
 
    position: absolute; 
 
    bottom: 0; 
 
    left: 0; 
 
}
<div class="container"> 
 
    <h1>Hello, world!</h1> 
 
    <div class="meta">intro</div> 
 
</div>

1
  • Switch to flex-direction: column
  • Bewerben justify-content: space-between
  • Einfügen eines unsichtbaren "Spacer" Element zum Ausgleich beiden Enden

.container { 
 
    height: 200px; 
 
    background: red; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-between; 
 
} 
 

 
.invisible { visibility: hidden; }
<div class="container"> 
 
    <div class="invisible">intro</div> 
 
    <h1>Hello, world!</h1> 
 
    <div class="meta">intro</div> 
 
</div>

Beachten Sie, dass die Flex-Ausrichtungseigenschaften durch die Verteilung des verfügbaren Platzes im Container funktionieren. Dies bedeutet, dass justify-content: space-between das mittlere Element (h1) nur dann genau zentrieren kann, wenn beide benachbarten Elemente die gleiche Höhe haben. Für weitere Details siehe Box # 71 here.

+1

Eine weniger aufdringliche Art des Ausbalancierens könnte sein, eine 'line-height' oder' height' für '.meta' zu wählen und ein' .container :: before' Pseudo-Element mit demselben Wert einzufügen. – Oriol

+0

@Oriol, ja, viel sauberer. Und löst das Problem mit der Semantik. Vielen Dank. –