2017-05-03 84 views
0

我想爲設置視圖構建特定的佈局。這是應該的樣子: MockupCSS:邊欄100%顯示高度,沒有重疊的導航欄。 (個人導航高度)

有一個固定導航欄上的側和右側內容可以獨立滾動。左側的導航欄應始終填充除導航欄外的整個頁面。

我知道,我可以讓左側導航position:fixed並給它一個頂部導航高度的偏移量,但導航的高度動態更改爲

那麼有什麼動態的解決方案嗎?

body, 
 
html { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
h1 { 
 
    margin: 0; 
 
} 
 

 
.lorem { 
 
    background-color: Gainsboro; 
 
    height: 100px; 
 
    margin: 10px; 
 
} 
 

 
#nav-top { 
 
    height: 100px; 
 
    Background-color: SeaGreen; 
 
} 
 

 
#nav-sub { 
 
    height: 30px; 
 
    Background-color: YellowGreen; 
 
} 
 

 
.content { 
 
    position: relative; 
 
} 
 

 
.left-nav { 
 
    position: fixed; 
 
    background-color: Teal; 
 
    top: 0; 
 
    margin: 0; 
 
    bottom: 0; 
 
    z-index: 2; 
 
}
<div id="nav-top"> Navigation</div> 
 
<div id="nav-sub"> Subnavigation</div> 
 
<ul class="left-nav"> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
</ul> 
 

 
<div class="content"> 
 
    <h1>Scrollable Content</h1> 
 
    <div class="lorem"> 
 
    </div> 
 
    <div class="lorem"> 
 
    </div> 
 
    <div class="lorem"> 
 
    </div> 
 
    <div class="lorem"> 
 
    </div> 
 
    <div class="lorem"> 
 
    </div> 
 
</div>

這是鏈接到我的JSFiddle: 感謝您的幫助!

+0

這是你想要的嗎? https://jsfiddle.net/webbm/rL3cjf9k/2/ – webbm

+0

@webbm差不多,我仍然無法使用此解決方案滾動內容。第一個ipsum div下面的內容不可見,不能滾動到視圖中。 – HelloWorld0815

+0

什麼導致標題的高度動態變化?用戶在頁面上執行操作?頁面到頁面內容? –

回答

0

爲什麼不使用表格呢?

body, html { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
h1{ 
 
    margin:0; 
 
} 
 

 
.lorem{ 
 
    background-color: Gainsboro; 
 
    height: 100px; 
 
    margin:10px; 
 
} 
 

 
#nav-top{ 
 
    height:100px; 
 
    Background-color:SeaGreen; 
 
} 
 
#nav-sub{ 
 
    height:30px; 
 
    Background-color:YellowGreen; 
 
} 
 

 
.content{ 
 
    width:100%; 
 
} 
 

 
.left-nav { 
 
    background-color: Teal; 
 
    vertical-align: top; 
 
}
<div id="nav-top"> Navigation</div> 
 
<div id="nav-sub"> Subnavigation</div> 
 

 
<table><tr class="left-nav"> 
 
<td> 
 
    <ul> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    <li>Item</li> 
 
    </ul> 
 
</td> 
 
<td class="content"> 
 
    <div > 
 
     <h1>Scrollable Content</h1> 
 
     <div class="lorem"> 
 
     </div> 
 
      <div class="lorem"> 
 
     </div> 
 
      <div class="lorem"> 
 
     </div> 
 
      <div class="lorem"> 
 
     </div> 
 
      <div class="lorem"> 
 
     </div> 
 
    </div> 
 
</td> 
 
</tr> 
 
</table>

+0

我不知道你會如何做到這一點與表。要將td高度設置爲所需的高度,將導致同樣的問題。你的代碼導致奇怪的行爲。它看起來不像我畫的樣機。 – HelloWorld0815

+0

@ HelloWorld0815我更新了代碼,應該看起來更好。 – Neil

+0

差不多,我希望左側導航是粘滯的,這樣在滾動時這些項目總是可見的。 – HelloWorld0815

0

應用寬度和高度的身體,並應用固定尺寸的報頭,側邊欄和主要內容。

body { 
 
    width: 100vw; 
 
    height: 100vh; 
 
    margin: 0; 
 
    padding: 0; 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    overflow: hidden; 
 
} 
 

 
header { 
 
    width: 100%; 
 
    min-height: 100px; 
 
    background-color: rgb(103, 194, 33); 
 
    display: flex; 
 
    align-items: center; 
 
    box-sizing: border-box; 
 
    padding: 5%; 
 
} 
 

 
aside { 
 
    width: 20%; 
 
    max-height: calc(100% - 100px); 
 
    background-color: rgb(159, 159, 159); 
 
} 
 

 
ul { 
 
    list-style: none; 
 
    margin: 0; 
 
    padding: 0; 
 
    display: flex; 
 
    flex-direction: column; 
 
    align-items: center; 
 
} 
 

 
li { 
 
    padding: 5%; 
 
} 
 

 
main { 
 
    width: 80%; 
 
    max-height: calc(100% - 100px); 
 
    overflow-x: hidden; 
 
    overflow-y: scroll; 
 
    box-sizing: border-box; 
 
    padding: 2.5%; 
 
} 
 

 
.container { 
 
    width: 100%; 
 
    height: 25%; 
 
    background-color: rgb(223, 223, 223); 
 
    margin-bottom: 2.5%; 
 
}
<header>Brand</header> 
 
<aside> 
 
    <ul> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    <li>item</li> 
 
    </ul> 
 
</aside> 
 
<main> 
 
    <h1>Some Content</h1> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
    <div class="container"></div> 
 
</main>

+0

我不知道標題高度是動態變化的。我還希望頭部具有靜態高度,以確保它在移動設備和桌面上具有相同的高度。所以我不能使用%值,而是需要堅持絕對值。此外,這種解決方案很難應用於我的設置,因爲元素被包裹到更多標籤中。爲了讓它100%的工作,我需要將每個父div設置爲100%的高度。 (打破其他事情) – HelloWorld0815

+0

如果您不知道標題高度,爲什麼將它設置爲100px?百分比值不是必需的。你可以將它設置爲你想要的任何高度。我將更新代碼以表明這一點。而對於其他的事情,如果你想讓它們適合你的可滾動部分,你需要更新你的代碼。 –

+0

我將它設置爲100px,以保持示例儘可能簡單,並將其降至其核心「問題」。在真正的應用程序中,有一些媒體查詢和用戶操作會更改標題內的元素,這會導致我無法預測的動態高度。 也'高度:calc(100% - 100px);'需要我知道偏移量是100px。 – HelloWorld0815