2017-12-24 3 views
3

Ich habe eine Flexbox-gesteuerte Fußzeile. Es kann 1,2 oder 3 untergeordnete divs enthalten.Center wenn nur ein einzelnes Element in der Flexbox

.footer { 
    display: flex; 
    flex-direction: row; 
    align-items: center; 
    justify-content: space-between; 
} 

<div class='footer'> 
    <div>Left</div> 
    <div>Middle</div> 
    <div>Right</div> 
</div> 

mit 2 oder 3 divs arbeitet die CSS oben fein:

  • mit drei, links und Recht sind gerötet links und rechts und Mittel ist in der Mitte .
  • mit 2 sie gespült links und rechts

Aber mit einer einzigen div ist linksbündig. Ich würde es vorziehen, würde es zentriert sein.

Wie kann ich die CSS anpassen, so dass im Falle eines einzelnen div es zentriert wird, während das Verhalten für 2 oder 3 divs Halte?

+1

Für jeden, der keinen 'Zwischenraum 'benötigt, zentriert' space-around 'einen einzelnen Gegenstand [[jsfiddle demo] (https://jsfiddle.net/fx6pw1hd/)). Hier ist die Erklärung: https://stackoverflow.com/q/36487476/3597276 –

Antwort

5
.footer > :only-child 
{ 
    margin-left: auto; 
    margin-right: auto; 
} 
+0

Jeder Grund, nicht '' 'margin: auto'''' zu verwenden? – ardochhigh

+0

Es war in der ersten Antwort. Aber wie es in den Kommentaren notiert wurde (und dann entfernt wurde), sollten Sie Regeln besser nicht überschreiben, wenn Sie es nicht brauchen. – CyberAP

3

Sie können Ihre Einzelteile wachsen mit den verfügbaren Raum stellen Sie sicher, so dass ihr Inhalt relativ zu dem Element

.footer > div { 
    flex-grow:1: 
    text-align: center; // for example 
} 

.footer { 
 
    display: flex; 
 
    flex-direction: row; 
 
    align-items: center; 
 
    justify-content: space-between; 
 
} 
 

 
.footer > div { 
 
flex-grow:1; 
 
text-align:center; //for example 
 
}
<div class='footer'> 
 
    <div>Left</div> 
 
    <div>Middle</div> 
 
    <div>Right</div> 
 
</div>

2

befinden Wenn Sie die verwenden möchten Marge, nur um das zu tun, Marge anpassen, können Sie verwenden space-evenly, oder die Cross-Browser-Trick mit Pseudo-Elemente und Ihre bestehenden space-between

Stapel Schnipsel - pseudo + space-between

.footer { 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: space-between; 
 
} 
 
.footer::before, .footer::after { 
 
    content: ''; 
 
}
<div class='footer'> 
 
    <div>Left</div> 
 
    <div>Middle</div> 
 
    <div>Right</div> 
 
</div>

Stapel Schnipsel - space-evenly (browser support)

.footer { 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: space-evenly; 
 
}
<div class='footer'> 
 
    <div>Left</div> 
 
    <div>Middle</div> 
 
    <div>Right</div> 
 
</div>

Verwandte Themen