2016-03-30 2 views
0

フレックスボックスで基本的なことを達成しようとしていますが、これを行う方法はわかりません。センター内の特定のアイテムにフレックスを合わせる

私の目標は、3つのdivを一列に整列させ、中間のdiv(ここでは "short"とする)を中央に配置することです。 絵がより明確になるであろう:

enter image description here

これらのdivが中心ではなく、私は希望としてされています。私は、 "短いdiv"を中心にしたい、そして他のものを望んでいました。私がこれを逃したCSSルールはありますか?

私のコード、これまでとJsfiddle:

<div class="box"> 
    <div class="A">whatever</div> 
    <div class="B">short</div> 
    <div class="C"> a f*cking very very very very very long content</div> 
</div> 

CSS

.box{ 
display:flex; 
flex-flox:row nowrap; 
justify-content:center; 
align-content:center; 
align-items:center; 
background-color:red; 
} 

.A{ 
border:medium solid black; 
} 
.B{ 
border:medium solid black; 
} 
.C{ 
border:medium solid black; 
} 

https://jsfiddle.net/js7hboek/

これは純粋なフレキシボックスでは不可能である

+0

は、[OK]を助けることができる、ポジショニング...一種の

しかしフレキシボックスのポイントを未然に防ぐ必要になります。答えてくれてありがとう、私はこの種の心配には不安でした。私は本当にそれが存在することを願っています。 – ssbb

+1

フレックスセンタリングのテクニックをご紹介します。特に、ボックス71〜73を参照されたい。 http://stackoverflow.com/a/33856609/3597276 –

答えて

2

ありがとう...それは仕方ありませんセンタリング作業。あなたが構造を変更することができれば、フレキシボックスは

* { 
 
    box-sizing: border-box; 
 
} 
 
.box { 
 
    display: flex; 
 
} 
 
.wrapped { 
 
    flex: 1; 
 
    border: 1px solid grey; 
 
} 
 
.A { 
 
    text-align: right; 
 
}
<div class="box"> 
 
    <div class="wrapped"> 
 
    <div class="A">whatever</div> 
 
    </div> 
 
    <div class="B">short</div> 
 
    <div class="wrapped"> 
 
    <div class="C">a very very very very very long content</div> 
 
    </div> 
 
</div>

+0

少なくとも、それは実用的な解決策です。ちょうど悲しいことに、フレックスボックスはそれだけではできません。 ty – ssbb

+0

Flexboxは基本的にマージンと同じ行の他の要素を操作して動作します。margin:autoは正しく動作しません。 CSSグリッドは** long **の方法で解決策を提供します。 –

関連する問題