2016-12-16 3 views
0

基本的な3セクションレイアウトのWebページをレイアウトします。上に固定された静的なトップナビゲーションバーがあります。そのすぐ下には、ページの全幅と残りの高さを占める2つのセクションがあります。固定サイドバー(折りたたみ不可)があり、右側にコンテンツを表示するメインペイン(ダッシュボードを読む)があります。3セクションレイアウト

現在のところ、サイドバーとメインウィンドウの幅のパーセント値をハードコーディングしています。サイドバーに最小/最大幅を適用すると、レイアウトが分割されます。必要に応じて固定幅にすることができます。

サイドバーの最小/最大/固定幅を割り当てると、サイドバーで使用されない残りの幅をメインペインのセクションで取得するにはどうすればよいですか?

html { 
 
    height: 100%; 
 
} 
 
body { 
 
    padding: 0px; 
 
    height: 100%; 
 
} 
 
div { 
 
    text-align: center; 
 
    color: white; 
 
} 
 
.top-nav { 
 
    background-color: green; 
 
    height: 65px; 
 
    margin: 0px; 
 
    padding: 0px; 
 
} 
 
.content { 
 
    height: 100%; 
 
    width: 100%; 
 
} 
 
.side-bar { 
 
    background-color: blue; 
 
    width: 10%; 
 
    height: 100%; 
 
    float: left; 
 
} 
 
.main-pane { 
 
    background-color: red; 
 
    height: 100%; 
 
    width: 90%; 
 
    float: right; 
 
}
<div class="top-nav"> 
 
    Fixed Top Navigation 
 
</div> 
 
<div class="content"> 
 
    <div class="side-bar"> 
 
    Fixed Side Bar 
 
    </div> 
 
    <div class="main-pane"> 
 
    Main Pane 
 
    </div> 
 
</div>

Here is the above code in a pen.

編集:私はより好ましい解決策がある場合は、この問題を完全に異なる方法で取り組む他のソリューションに開いています例えばフレックスボックス

+0

あなたは、彼らがメインのペインで、すなわち唯一のコンテンツがスクロール可能である、彼らはユーザーにスクロールする必要があり、ユーザにスクロールする必要があるか、単にモハメド・テッド@次元 –

+1

に変更しない意味ですか。 –

+0

この質問を確認してください:http://stackoverflow.com/questions/26001765/research-on-creating-grids-that-c​​ombine-percentage-and-static-e-g-pixel-value – luke

答えて

3

を添加するIは、固定サイズにサイドバーを変更し、絶対に位置を変え。メインのコンテンツパネルで、サイドバーの幅を補填しました。更新されたペンをチェックしてください。ここで http://codepen.io/anon/pen/ENGbva?editors=1100

<div class="top-nav"> 
    Fixed Top Navigation 
</div> 
<div class="content"> 
<div class="side-bar"> 
    Fixed Side Bar 
</div> 
<div class="main-pane"> 
    Main Pane 
</div> 
</div> 

html{ 
    height: 100%; 
} 
body { 
    padding: 0px; 
    height: 100%; 
} 
div{ 
    //text-align: center; 
    color: white; 
} 
.top-nav { 
    background-color: green; 
    height: 65px; 
    margin: 0px; 
    padding: 0px; 
} 
.content { 
    height: 100%; 
    width: 100%; 
    position: relative; 
} 
.side-bar { 
    background-color: blue; 
    width: 200px; 
    height: 100%; 
    float: left; 
    position: absolute; 
    left: 0; 
    z-index: 999; 
} 
.main-pane { 
    background-color: red; 
    height: 100%; 
    width: 100%; 
    position: absolute; 
    left: 0; 
    z-index: 1; 
    padding-left: 200px; 
} 
0

フレックスボックスをサポートするブラウザ(すべてmodern browsers)です。

html { 
 
    height: 100%; 
 
} 
 
body { 
 
    padding: 0px; 
 
    height: 100%; 
 
    
 
    /*make the body a flex container*/ 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
div { 
 
    text-align: center; 
 
    color: white; 
 
} 
 
.top-nav { 
 
    background-color: green; 
 
    height: 65px; 
 
    margin: 0px; 
 
    padding: 0px; 
 
    
 
    /*prevent div from shrinking or growing*/ 
 
    flex-shrink: 0 
 
    flex-grow: 0 
 
} 
 
.content { 
 
    width: 100%; 
 
    /*tell .content to grow as much as it can in the body*/ 
 
    flex: 1; 
 
    
 
    display: flex; 
 
} 
 
.side-bar { 
 
    background-color: blue; 
 
    width: 10%; 
 
    
 
    /*prevent div from shrinking or growing*/ 
 
    flex-shrink: 0; 
 
    flex-grow: 0; 
 
} 
 
.main-pane { 
 
    flex-grow: 1; 
 
    background-color: red; 
 
    overflow-y: scroll; 
 
}
<div class="top-nav"> 
 
    Fixed Top Navigation 
 
</div> 
 
<div class="content"> 
 
    <div class="side-bar"> 
 
    Fixed Side Bar 
 
    </div> 
 
    <div class="main-pane"> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    <div>Main Pane</div> 
 
    </div> 
 
</div>

余分なスクロールがスニペットビューアのパディングによって

+1

素晴らしいです。私はちょうどサイドバーに分の幅の属性を追加し、意図したとおりに動作しました。私の唯一の懸念は、どうすれば1つのスクロールバーしか持てないのですか?ページ全体のスクロールバーとして機能するが、メインペインのコンテンツだけが動くスクロールバーがあることが望ましい。 –

1

もう少し下位互換性を持つソリューションです。基本的には、両方のdivを互いの上に置きますが、コンテンツがナビゲーションバーによって隠されないようにメインページdivに余白を与えます。

html { 
 
     height: 100%; 
 
    } 
 
    body { 
 
     padding: 0px; 
 
     height: 100%; 
 
    } 
 
    div { 
 
     text-align: center; 
 
     color: white; 
 
    } 
 
    .top-nav { 
 
     background-color: green; 
 
     height: 65px; 
 
     margin: 0px; 
 
     padding: 0px; 
 
    } 
 
    .content { 
 
     height: 100%; 
 
     width: 100%; 
 
    } 
 
.side-bar { 
 
    background-color: blue; 
 
    width: 150px; 
 
    height: 100%; 
 
    float: left; 
 
    position: absolute; 
 
} 
 
.main-pane { 
 
    background-color: red; 
 
    height: 100%; 
 

 
    margin-left: 150px; 
 
    overflow-y: scroll; 
 
}
<div class="top-nav"> 
 
     Fixed Top Navigation 
 
    </div> 
 
    <div class="content"> 
 
     <div class="side-bar"> 
 
     Fixed Side Bar 
 
     </div> 
 
     <div class="main-pane"> 
 
     Main Pane 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
    <BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll<BR>Scroll 
 
     </div> 
 
    </div>

0

私は.sidebarを与え、位置-NAVの.top:固定し、.content移動し、(.content相対位置を与える)65pxでダウン.sidebar、それが何をやっているように見えますあなたが欲しい...?

HTML:

<div class="top-nav"> 
    Fixed Top Navigation 
</div> 
<div class="content"> 
<div class="side-bar"> 
    Fixed Side Bar 
</div> 
<div class="main-pane"> 
    Main Pane 
</div> 
</div> 

CSS:

html{ 
    height: 100%; 
} 
body { 
    padding: 0px; 
    height: 100%; 
} 
div{ 
    text-align: center; 
    color: white; 
} 
.top-nav { 
    background-color: green; 
    height: 65px; 
    margin: 0px; 
    padding: 0px; 
    position:fixed; 
    width:100%; 
    z-index:100; 
} 
.content { 
    height: 100%; 
    width: 100%; 
    position:relative; 
    top:65px; 
} 
.side-bar { 
    background-color: blue; 
    width: 10%; 
    height: 100%; 
    float: left; 
    position:fixed; 
    top:65px; 
} 
.main-pane { 
    background-color: red; 
    height: 100%; 
    width: 90%; 
    float: right; 
} 

Codepenフォーク: http://codepen.io/mattDangerly/pen/xRmPQE?editors=1100

0

あなたはフレックスとオーバーフローを使用することができます:http://codepen.io/gc-nomade/pen/VmqrGW?editors=1100

html { 
 
    height: 100%; 
 
} 
 
body { 
 
    margin:0; 
 
    padding: 0px; 
 
    height: 100%; 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
div { 
 
    text-align: center; 
 
    color: white; 
 
} 
 
.top-nav { 
 
    background-color: green; 
 
    height: 65px; 
 
    margin: 0px; 
 
    padding: 0px; 
 
} 
 
.content { 
 
    flex: 1; 
 
    display: flex; 
 
    overflow: hidden; 
 
} 
 
.side-bar { 
 
    background-color: blue; 
 
    width: 10%; 
 
    text-align:left; 
 
    /* if needed here too *//*overflow: auto;*/ 
 
} 
 
.main-pane { 
 
    text-align:left; 
 
    background-color: red; 
 
    flex: 1; 
 
    overflow: auto; 
 
}
<div class="top-nav"> 
 
    Fixed Top Navigation 
 
</div> 
 
<div class="content"> 
 
    <div class="side-bar"> 
 
    Fixed Side Bar 
 
    </div> 
 
    <div class="main-pane"> 
 
    main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>main<br/>...last line 
 
    </div> 
 
</div>
固定することにより210

関連する問題