2016-11-16 3 views
2

メディアクエリの後にフレックスボックスのサイドバーに新しい行を共有させることはできますか? (狭い画面上の)後フレックスボックスのサイドバーは新しい行を共有できますか?

+---+-------+---+ 
| |  | | 
| L | Main | R | 
| |  | | 
+---+-------+---+ 

(ワイド画面上の)前

+-------+ 
|  | 
| Main | 
|  | 
+-------+ 
| | | 
| L | R | 
| | | 
+-------+ 

HTML(メディアクエリの後に変更できません)

<div class="container"> 
    <div class="sideLeft">L</div> 
    <div class="MainContent">Main</div> 
    <div class="sideRight">R</div> 
</div> 
+0

として%を使用することができますマージンをしたくない場合は、あなたのCSSはどのようなものが見えますか? – isherwood

+0

はい....できます。 – MassDebates

+0

私はフレックスボックスモデルがそれを行うことができるかどうか分からなかったので、私はCSSと同じくらいまでは得られませんでした。私はそれがどんな順序でも他のすべてのものを重ねることができることを知っています。しかし、ここに私の最初の試みがあります:https://jsfiddle.net/0tb5yyto/ フレックスラップを追加しようとしました:nowrap – iantresman

答えて

2

あなたは上order: -1を変更することができますメディアクエリを伴うmain div。 container要素にflex-wrap: wrapを設定する必要もあります。またcalc(% - 10px)は両側に5pxののmarginのためですが、あなたはちょうどあなたができるSE here

* { 
 
    box-sizing: border-box; 
 
} 
 
.container { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    height: 200px; 
 
    border: 1px solid gray; 
 
    padding: 5px 
 
} 
 
.container > div { 
 
    display: flex; 
 
    border: 1px solid black; 
 
    margin: 5px; 
 
    flex: 1; 
 
} 
 
div.main { 
 
    flex: 3; 
 
} 
 
@media(max-width: 480px) { 
 
    div.main { 
 
    order: -1; 
 
    flex: 0 0 calc(100% - 10px); 
 
    } 
 
    .container > div:not(.main) { 
 
    flex: 0 0 calc(50% - 10px); 
 
    } 
 
}
<div class="container"> 
 
    <div class="sideLeft">L</div> 
 
    <div class="main">Main</div> 
 
    <div class="sideRight">R</div> 
 
</div>

+0

ありがとう、あなたは天才です。今私はあなたが何をしたのか、なぜそれがうまくいくのかを理解する必要があります!私が予想していたよりもはるかに複雑です。 – iantresman

+0

あなたは大歓迎です、それほど難しくない、あなたはそれについてもっと読むことができますhttps://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes –

関連する問題