2013-03-23 144 views
21

我試圖完成這個設計: example design 側欄將固定,但右側(主要內容)將垂直滾動(如果用戶的瀏覽器窗口較小,可能會水平)。達到此目的的最佳方法是什麼?如何正確實現固定側欄?

我試圖使側邊欄是「固定」用的200像素一個固定的寬度,然後將主內容只是有一個利潤率左的200像素。但是,如果用戶的瀏覽器比主內容小,則當用戶嘗試水平滾動時,側欄會覆蓋所有內容。

有一個更聰明的方式來實現這一目標?謝謝!

+1

「正確」 是一種主觀的形容詞。對你來說什麼是正確的,對於Google標準可能不正確,但對於Facebook的風格指南可能是正確的。你能否用幾句話來定義你想要的標題? – 2017-08-16 08:10:30

回答

28

使用內容的div作爲你的頁面的容器。

.sidebar { 
    position: fixed; 
    width: 200px; 
    height: 400px; 
    background: #000; 
} 
.content { 
    margin-left: 200px; 
    height: 500px; 
    width: auto; 
    position: relative; 
    background: #f00; 
    overflow: auto; 
    z-index: 1; 
} 
.info { 
    width: 1440px; 
    height: 300px; 
    position: relative; 
    background: #f55; 
} 

<div class="sidebar"></div> 
<div class="content"> 
    <div class="info"></div> 
</div> 

您的內容需要是放置頁面的容器。這裏的值是我的測試,看看我是否正確。如果您的寬度和高度超過了您爲內容設置的值,則會出現滾動條。

有一個小提琴:http://jsfiddle.net/djwave28/JZ52u/


編輯:響應側邊欄

爲了有一個固定的響應側邊欄,只需添加一個媒體查詢。

實施例:

@media (min-width:600px) { 
    .sidebar { 
    width: 250px; 
    } 
    .content { 
    margin-left: 250px; 
    } 
} 

下面是另一個小提琴:http://jsfiddle.net/djwave28/JZ52u/363/

+1

這幾乎是我原來的。問題是,當有橫向滾動時,側邊欄會重疊內容。我想我需要側邊欄垂直滾動時固定,但不水平滾動時。 – Jakemmarsh 2013-03-23 19:14:59

+0

JSFiddle鏈接不再有效。 – Zach 2014-07-30 22:27:16

+0

@Zach - 我重新創建了小提琴,但它與上面的代碼相同。 – Daniel 2014-07-31 18:57:38

19

下面是一個替代:http://jsfiddle.net/BoyWonder/8mVQX/embedded/result/

body{ 
    padding-left:200px; 
    margin:0; 
} 
div#sidebar{ 
    position:fixed; 
    height:100%; 
    width:200px; 
    top:0; 
    left:0; 
    background:grey; 
} 
div#content{ 
    background:black; 
    width:100%; 
    height:1600px; 
} 
+1

當邊欄上的對象太多時,這完全沒用。查看你自己的擴展代碼:http:// jsfiddle。net/8mVQX/401/ – 2017-08-16 08:08:17

+0

@SoldeplataSaketos完全沒有用處似乎有些誇張,側欄上的一個簡單的'overflow-y:auto'修復了這個問題。 – seBaka28 2018-03-01 15:58:59