2017-12-24 6 views
3

フレックスボックスで制御されたフッターがあります。 1,2または3の下位divを含むことができます。フレックスボックス内の1つのアイテムだけの場合の中心

2つのまたは3 のdivで
.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> 

、上記のCSSが正常に動作します:3と

  • は、左右フラッシュされ中東は真ん中にあります。彼らは

左右フラッシュされているが、単一 のdivと、それは左寄せされています。2と
  • 私はそれが中心になることを好むだろう。 2つのまたは3 のdivのための行動を維持しながら、単一ののdivの場合には、それは、中央に配置されますように、私はCSSを調整することができますどのように

  • +1

    'space-between'を必要としない人のために、' space-around'はデザイン[(jsfiddle demo)(https://jsfiddle.net/fx6pw1hd/)で単一項目を中心にしています)。説明は次のとおりです:https://stackoverflow.com/q/36487476/3597276 –

    答えて

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

    '' margin:auto'''を使わない理由は? – ardochhigh

    +0

    初期の回答でした。しかし、それがコメントに書かれている(そして削除された)ので、必要がないときにルールを上書きしないほうがよいでしょう。 – CyberAP

    3

    あなたが使用したい場合は、その内容が比較的アイテム

    .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

    に配置されますので、あなたのアイテムが利用可能なスペースと一緒に成長を確認することができますマージンを調整するには、space-evenlyを使用するか、クロスブラウザで擬似要素を使用してトリックし、既存のspace-between

    スタックスニペット - + 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>

    スタックスニペット - space-evenlybrowser support

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

    関連する問題