Mein Layout hat einen Container flex-container
und ein Kind.
HTML:
<div class="flex-container">
<div>text</div>
</div>
Der Behälter und das Kind haben eine unbekannte Höhe . Und das Ziel ist:
- Wenn das Kind eine geringere Höhe als der Behälter hat, erscheint es horizontal und vertikal zentriert.
- Wenn das Kind eine größere Höhe als der Container hat, passt es sich oben und unten an und wir können scrollen.
Planen:
Der schnellste Weg zum Zentrieren eines Elements mit Flexbox ist der folgende:
.flex-container
{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 300px;
overflow-y: scroll;
background: #2a4;
}
.flex-container > div
{
background: #E77E23;
width: 400px;
}
<div class="flex-container">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>
</div>
Codepen: http://www.codepen.io/ces/pen/slicw
Wenn das Kind des Containers jedoch eine größere Höhe hat, wird das Kind nicht richtig angezeigt. Das Kind erscheint geschnitten (nur der obere Teil).
html,body
{
height: 100%;
width: 100%;
padding: 0;
margin: 0;
}
.flex-container
{
display: flex;
align-items: center; // vertical
justify-content: center; // horizontal
width: 100%;
height: 100px;
overflow-y: scroll;
background: #2a4;
}
.flex-container > div
{
background: #E77E23;
width: 400px;
}
<div class="flex-container">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>
</div>
Codepen: http://www.codepen.io/ces/pen/sGtfK
Planen:
Gibt es eine Möglichkeit, dieses Problem zu beheben?
.flex-container
hat der Anfangswertalign-items: flex-start
(dh oben).Add
align-self:flex-start;
to.flex-container > div
kann auch dieses Problem beheben.Siehe: http://www.w3.org/TR/css-flexbox-1/#auto-margins
quelle