2012-04-13 92 views
4

如何在內容區域始終保持所有方向的填充都爲垂直滾動條?下面的圖片更好地描述了我在找什麼。將滾動條放置在填充區域外

I only have the obvious "padding: x" to show for my work :(我試圖嵌套填充,它是熱鬧:)

我想避免的JavaScript,除非真正需要它。把我的頭頂部

Current and Desired look of the page

+0

這樣的事情:http://jsfiddle.net/3V2HP/3/? – Christoph 2012-04-17 13:54:51

+0

**爲什麼**你想要這個?這感覺非常混亂和不可用。你如何證明從滾動的框中分離滾動? – ANeves 2012-04-17 14:07:30

+0

@Anves這只是一種固定填充的感覺。有時候派上用場。要得到更時髦:http://jsfiddle.net/3V2HP/4/與淡入淡出效果:-D – Christoph 2012-04-17 14:10:17

回答

15

這撥弄可能是,你想要什麼:Fiddle

這個例子包含梯度的頂部和底部,但可以是純色當然,如果你想要的話。

您可以使用#content元素的填充區域進行遊戲,但請注意,如果您要創建一個passepartout效果,則需要在右側添加一個附加元素。

#container{ 
 
position:relative; 
 
height:300px; 
 
width:300px; 
 
} 
 
#content{ 
 
height:200px; 
 
width: 200px; 
 
padding: 50px; 
 
overflow-y: auto; 
 
background-color: #cef; 
 
} 
 
.bar { 
 
position:absolute; 
 
width: 280px; 
 
height: 50px; 
 
background-color:#bcd; 
 
} 
 
.vbar { 
 
position:absolute; 
 
width: 50px; 
 
height: 280px; 
 
background-color:#bcd; 
 
} 
 
#topbar{ 
 
top:0;   
 
} 
 
#bottombar{ 
 
bottom:0; 
 
} 
 
#leftbar{ 
 
top:0;   
 
} 
 
#rightbar{ 
 
right:20px;   
 
top:0; 
 
}
<div id="container"> 
 
    <div id="topbar" class="bar"> </div> 
 
    <div id="content" class="pad"> 
 
     1<br> 2<br> 3<br> 4<br> 5<br> 6<br> 7<br> 8<br> 9<br> 10<br> 11<br> 12<br> 13<br> 14<br> 15<br> 16<br> 17<br> 18<br> 19<br> 20<br> 21<br> 22<br> 23<br> 24<br> 25<br> 26<br> 27<br> 28<br> 29<br> 30<br> 31<br> 32<br> 33<br> 34<br> 35<br> 36<br> 37<br> 38<br> 39<br> 40<br> 41<br> 42<br> 
 
    </div> 
 
    <div id="bottombar" class="bar"></div> 
 
</div>

編輯: 改變了小提琴鏈接,老鏈路與梯度如下:Fiddle

+0

+1。你可以在這裏發佈代碼嗎?或者對其進行解釋。 – ANeves 2012-04-17 15:03:14

+0

我喜歡這個答案:)我做了一些更改,以顯示兩側的圖像。我遇到了一個問題,滾動條寬度被認爲是容器的一部分,所以在抵消它時我必須考慮它的寬度。如果所有的滾動條都是一樣的話,那就OK了,但我懷疑它是多少操作系統和手機。無論如何,這些都是我的變化http://jsfiddle.net/3V2HP/8/結果讓我想起了舊的Word剪貼畫嚮導中的東西 – 2012-04-17 15:08:57

+0

@ANeves這應該是你想要的:http://jsfiddle.net/3V2HP/ 9 /注意,如果更改滾動框的填充,則需要調整容器的尺寸。 – Christoph 2012-04-17 15:12:48

0

一種方法是使用兩個div滾動區域內類似這樣的

<div> 
    <div class="top"></div> 
    <div class="content">1, 2, 3, 4, 5, 6 ....</div> 
    <div class="bottom"></div> 
</div> 

東西然後用CSS來給「頂「頂部固定位置,底部固定位置」底部「。您還需要爲「內容」div分配頂部和底部填充以說明「頂部」和「底部」div。

+0

感謝您的幫助。無論我在哪裏放置頂欄,它都想覆蓋前幾個數字。另外,我希望滾動條一直延伸到底部條的底部。 http://jsfiddle.net/3V2HP/1/ – 2012-04-13 23:42:17

0

如果我沒有理解這個權利,你可以定義一個大小股利或任何包含數字然後使用CSS overflow屬性:

div{ 
    overflow:scroll; 
} 
3

與DIV的做吧。 CSS:

<style type="text/css"> 
div#top { 
    margin: 0px; 
    padding: 0px; 
    height: 100px; 
    width: 100%; 
    background-color: #97cee0; 
    position: fixed; 
    top: 0px; 
    left: 0px; 
    z-index: 100; 
} 
div#left { 
    margin: 0px; 
    padding: 0px; 
    height: 100%; 
    width: 100px; 
    background-color: #97cee0; 
    position: fixed; 
    top: 0px; 
    left: 0px; 
    z-index: 100; 
} 
div#right { 
    margin: 0px; 
    padding: 0px; 
    height: 100%; 
    width: 100px; 
    background-color: #97cee0; 
    position: fixed; 
    top: 0px; 
    right: 0px; 
    z-index: 100; 
} 
div#bottom { 
    margin: 0px; 
    padding: 0px; 
    height: 100px; 
    width: 100%; 
    background-color: #97cee0; 
    position: fixed; 
    bottom: 0px; 
    right: 0px; 
    z-index: 100; 
} 
div#content { 
    z-index: 0; 
    padding: 100px; 
} 
div#wrapper { 
overflow: scroll; 
} 
</style> 

HTML:

<div id="wrapper"> 
    <div id="top"></div> 
    <div id="left"></div> 
    <div id="right"></div> 
    <div id="bottom"></div> 
    <div id="content">Long list of stuff.</div> 
</div> 
+0

正如我試過,它適用於整個窗口。如果需要這種佈局,可以做些什麼,比如在一個表格單元格內還是在一個固定大小的div格式裏面? – 2012-04-17 13:57:28

+0

剛剛更新我的答案,包括一個包裝來解決這個問題,現在會自己測試它,可能需要添加一些標籤。 – 2012-04-17 14:00:40

+0

我的意思是,我不希望藍色填充物佔據整個窗口。當我更改包裝大小時,藍色填充應限制爲該框。 – 2012-04-17 14:19:56

2

瀏覽器負責呈現原生滾動條。我知道的所有瀏覽器都會將垂直滾動直接顯示在框模型的右側。

所以,如果你想有一個不直接附加到你的內容的滾動條,你將不得不使用某種類型的javascript滾動條。看看how to use the Slider control from JQuery UI as a scroll bar

如何做到這一點的本質是處理某種滾動事件,無論是從滑塊或某個地方的實際滾動條,然後使用它的值來改變內部的div的margin-top css值另一個div與overflow:hidden

+1

來檢查寬度,但是你可以使用填充使其看起來像「不直接連接」。 – Christoph 2012-04-17 15:16:42