6

私は明らかに何かを欠落しているに違いありません。ブートストラップ4で聖杯レイアウトの派生物を実装しようとしています。ブートストラップ4聖杯のレイアウト

ヘッダー - >左列、右端 - >フッターの代わりにヘッダーとフッターをFluid Centerカラム。明らかに、上部にヘッダーがあり、下部にフッターがあり、中央に液体が入っています。そして、すべての列は同じ高さです。

----------------------------------------------------- 
|   |  Header    |   | 
|   |---------------------------|   | 
| LEFT |       | RIGHT  | 
| PANEL |  MAIN CONTENT  | PANEL  | 
|   |       |   | 
|   |       |   | 
|   |---------------------------|   | 
|   |  Footer    |   | 
----------------------------------------------------- 

コードのボーンを以下に示します。私が苦労しているのは、ヘッダーとフッターが流体の中央の列に正しく表示されるようにすることです。私は答えがFlexBoxにあると感じていますが、どうやってそれをどうやって頭を包むことはできません!

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="container-fluid h-100" id="root"> 
 
    <div class="row h-100"> 
 
    <div class="col-md-3 fixed py-3">Page Panel Left</div> 
 
    <div class="col fluid py-3">Page Panel Main Stage 
 

 
     <div class="bg-warning" style="height:8rem;">I am a header with a fixed height.</div> 
 
     <div class="">I am the content, I should be fluid and stretch to the bottom.</div> 
 
     <div class="bg-warning" style="height:8rem;">I am the footer with a fixed height</div> 
 

 
    </div> 
 

 
    <div class="col-md-3 fixed py-3">Page Panel Right 
 
     <div> 
 
     <br> 
 
     <p>Nullam congue, dui luctus aliquam maximus, erat magna posuere purus, posuere elementum urna nisi vitae dolor. Integer tristique non velit ut suscipit. Vestibulum quam eros, blandit dapibus iaculis nec, volutpat vel purus. Quisque commodo euismod 
 
      ipsum, quis pulvinar augue. Cras non fermentum velit. Proin tincidunt lectus diam, at ornare augue interdum eget. Vivamus porttitor iaculis urna in porttitor. Maecenas auctor ac augue convallis eleifend. Praesent lacus odio, placerat sed felis 
 
      ac, vulputate auctor quam. Cras in nulla eu libero cursus cursus ut a enim. Praesent varius viverra maximus. Morbi accumsan, orci quis semper tempus, leo ipsum efficitur ipsum, eu fermentum ipsum est ac nibh. Ut ut venenatis eros. Duis neque 
 
      nulla, malesuada non ultrices non, laoreet nec enim. Mauris congue, ipsum non ultrices congue, leo eros tristique urna, bibendum accumsan ligula sem in justo.</p> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

答えて

4

中央の列がflex-columnであることを確認し、その後、メインコンテンツにflex-grow:1を使用しています。この例では、大きな画面ではサイドバーの幅を固定していますが、これを変更することもできます。

http://www.codeply.com/go/licdodtBCO

<div class="container-fluid h-100"> 
    <div class="row h-100"> 
     <!-- left sidebar --> 
     <div class="col-md-2 fixed"> 

     </div> 
     <!-- center content --> 
     <div class="col fluid d-flex flex-column"> 
      <nav id="topNav" class="navbar"> 
      </nav> 

      <!-- main content --> 
      <div class="row flex-grow"> 

      </div> 

      <footer class="navbar navbar-toggleable-xl navbar-faded navbar-light"> 
      </footer> 

     </div> 
     <!-- right sidebar --> 
     <div class="col-md-2 fixed"> 

     </div> 
    </div> 
</div> 

CSS

html { 
    height: 100%; 
} 

body { 
    min-height: 100vh; 
} 

/* fixed and fluid only on sm and up */ 
@media (min-width: 576px) { 
    .fixed { 
     flex: 0 0 200px; 
     min-height: 100vh; 
    } 
    .col .fluid { 
     min-height: 100vh; 
    } 
} 

.flex-grow { 
    flex:1; 
} 

Bootstrap 4 Holy Grail Demo

注:それはclassic "holy grail" layoutに、用語幅を指し、 "固定" ことに注意することが重要だ、とではなくの位置はposition:fixedのようになります。しかし、いくつかの調整をすることで、幅と位置を固定することができます。 https://www.codeply.com/go/s90QZLC0WT

+1

すごい:たとえば、ここに左サイドバーの固定幅位置と交互に「聖杯」のレイアウトです。それは素晴らしいです。ここでロジックツリーを試してみましょう。 1.中間列にフレックス列を示します。 2.最初のdivは自然に一番上にあります(例のナビゲーションバー)。 3.魔法はあなたの 'flex:1;'スタイルでメインコンテンツエリアに適用されます。これはこの列に適用される唯一の 'flex:'であるため、利用可能な領域の100%を占めます。 私はこの権利を持っていますか? – skavan

+0

そうだね。 – ZimSystem

関連する問題