2016-12-15 6 views
3

私が解決しようとしているCSSフレックスボックスの問題が1つあります。CSS Flexboxの右揃えresonsive

私は4つのdivを連続しています。それらのうちの2つは左に整列する必要があり、残りは右側に配置する必要があります。私はこれを行う方法を知っており、これは問題ではありません(margin-left: auto、第3位)。

しかし、彼らは小さな画面でラップしたいので、属性はflex-wrap: wrapです。 3番目と4番目のdivがすべての画面サイズの右側に表示されます。私はmargin-left: autoを4番目に追加することができます.3番目と4番目のdivの間に不要なスペースを作成しますが、それは小さな画面(3番目と4番目の右側にあります)で動作します。

私は

が、そのためにどんな素敵な解決策はあり... divの幅が動的であるため、メディアクエリを使用したくありませんか?私はここにフレックスボックスのオペレーションをしたくない!ここ Red is with margin-left: auto, blue is without

+0

私はあなたに男を与えてはいけません.. LoL .. 4ダイブ、1と2を左に、他のものを右に揃えたかったので。問題は?ページの内容をイメージすることはできますか?あなたのコードブックで見ることができるイメージを置かないでください。 – Obink

+0

ページの外観は、最初の大きな灰色のボックスと、このイメージの最後の灰色のボックスです。問題は2番目のボックスに表示され、赤いボックスでは「いいえ」、青いボックスでは「いいえ」と表示される3番目のボックス(小さな画面)に表示されます。私は本当の問題のイメージでそれをより簡単にすることはできません、それはもっと混乱するかもしれません...私を信頼してください... – Kantoci

答えて

2

要素.f2するjustify-content: flex-endmargin-right: autoを追加:青なしで、http://codepen.io/djkantoci/pen/XNxLVK

レッドmargin-left: autoである:ここ

はcodepenさ

.flex { 
 
    align-items: center; 
 
    background: #ddd; 
 
    display: flex; 
 
    justify-content: flex-end; 
 
    flex-wrap: wrap; 
 
    margin-bottom: 20px; 
 
    padding: 5px; 
 
} 
 
.flex.small { 
 
    width: 500px; 
 
} 
 

 
.f { 
 
    background: #333; 
 
    color: #fff; 
 
    flex: 0 0 auto; 
 
    margin: 5px; 
 
    min-height: 40px; 
 
    padding: 30px 50px; 
 
    text-align: center 
 
} 
 
.f2 { 
 
    margin-right: auto 
 
} 
 
.f3 { 
 
    flex-basis: 300px; 
 
}
<div class="flex"> 
 
    <div class="f f1">1</div> 
 
    <div class="f f2">2</div> 
 
    <div class="f f3">3</div> 
 
    <div class="f f4">4</div> 
 
</div> 
 

 
<div class="flex small"> 
 
    <div class="f f1">1</div> 
 
    <div class="f f2">2</div> 
 
    <div class="f f3">3</div> 
 
    <div class="f f4">4</div> 
 
</div>

OK?

+0

TNX!なぜ私はそれを考えなかったのか分かりません。私はずっと右に焦点を当てていた:) – Kantoci

+0

ようこそ! 1つの属性や値に固執するのはとても一般的です:) –

+0

もう片方の問題が見つかりました(私はcodepenでペンを更新しました)...最初の2つのdivの画面が小さくなりすぎて、 1つは右に揃えられます:(フレックスボックスは本当に正当性 - 自己のプロパティを持っているはずです... – Kantoci