2012-02-22 30 views
10

可能已經有一個jQuery插件可以實現這一點,但我找不到一個完全是我以後做的。如果有,請將我指向教程,謝謝。jQuery - DIV移動滾動動作和粘貼位置到窗口的頂部和底部

我的問題是我有很長的頁面內容,並且當您在頁面底部滾動時,側邊欄不可見。

因此,當您在頁面上下滾動時,我想讓我的#sidebar div粘貼到瀏覽器窗口的頂部和底部。

我的邊欄高度比您的典型屏幕分辨率要長,所以我需要邊欄的底部粘貼到瀏覽器窗口的底部以及瀏覽器的頂部。

因此,當您開始向下滾動時,側欄會像正常一樣滾動,但當您到達側欄的末尾時,它會粘住並且不會滾動,並且當您開始向上滾動時,側欄會一直跟隨側邊欄頂部到達瀏覽器,然後粘住。反之亦然。

這可能嗎?

我創建了一個簡單的設計佈局jsfiddle,它是中心的。我已經在邊欄中添加了一個虛線邊框,以便您現在可以在邊欄粘貼的位置。

http://jsfiddle.net/motocomdigital/7ey9g/5/

任何建議,或者你知道一個在線教程或演示,將最真棒!


UPDATE

請參見本文試圖通過@Darek羅斯曼

http://jsfiddle.net/dKDJz/4/

他有基本思想工作。但是滾動起來,導致它跳到頂部。我需要邊欄在滾動上/下運動時是流暢的。但堅持窗口的頂部或底部。當頁眉/頁腳處於視口中時,它也不應該被固定,因此它不會疊加。

感謝

+0

感謝您花時間爲它創建一個jsfiddle,使您能夠更輕鬆地溝通您正在嘗試做的事情並提出實現方案。 – Makotosan 2012-02-22 22:35:44

+0

這是你的追求? http://jsfiddle.net/dKDJz/2/ – 2012-02-22 22:53:01

+0

它不與我合作:( – baig772 2012-06-26 10:56:31

回答

0

不幸的是,我沒有足夠的代表簡單地用這個鏈接評論,所以這裏亞去:

http://www.derekallard.com/blog/post/conditionally-sticky-sidebar

這已經過了幾年了,但是基於屏幕截圖,它似乎完全覆蓋了你需要的東西。

+0

謝謝,恥辱我無法找到頁面上的演示?你曾經嘗試過嗎? – Joshc 2012-02-22 23:04:10

10

在這裏看到的小提琴:http://jsfiddle.net/dKDJz/2/

基本上,你只是看的滾動事件,一旦窗口的滾動偏移量小於側邊欄的頂部時,它增加了一個固定的類側邊欄,及排除當它滾動回來時。

這是從張貼在CSS-技巧一solution適應

+0

非常感謝您花時間來實現這一目標 - 我設法實現了類似的目標,儘管您的設備更加乾淨。我的問題是我的側邊欄(在較小的屏幕上)高於視口。所以我需要邊欄滾動滾動動作,並堅持在頂部或底部。這是整個側邊欄可用的。 – Joshc 2012-02-22 22:59:08

+0

TBH,我不知道,如果它甚至有可能.. – Joshc 2012-02-22 23:05:51

+0

我搞砸它更多一些:http://jsfiddle.net/dKDJz/4/這有點有,但不是真的。我認爲這可以通過更多的JS來完成 - 事情是,您需要檢測用戶何時向上或向下滾動,然後計算側邊欄的正確位置和頂部偏移量。如果您還沒有找到解決方案,並且在有更多時間時嘗試設置它,我會稍後再回來查看。 – 2012-02-22 23:25:33

0

試試這個位置http://jsfiddle.net/dKDJz/8/

我已經刪除了不少的代碼。

我所做的是,當您向下滾動並且它到達側欄的頂部時,它會粘貼到窗口的頂部。一旦你回滾到頂部,無論標題變得多高,它都會在不符合標題的情況下解除壓縮。

0

我玩過Derek正在做的事情,並且我已經完成了最初和最後的要求。

我已經編輯了一些我的需求的CSS,我相信你可以保留你的舊東西在那裏,並複製腳本。

http://jsfiddle.net/mLdnb/3/

/* * NewEdit/

我已經取代了我做了與你有什麼。我想出了這個:
http://jsfiddle.net/stillb4llin/dKDJz/47/

/* * EndEdit中/

+1

嗨尼古拉斯,如果你能解決這個問題,那將是非常棒的。 – Joshc 2012-06-06 15:45:40

+0

Josh - 這是如何工作的?我希望我理解你的權利! http://jsfiddle.net/stillb4llin/dKDJz/47/ – Stillb4llin 2012-06-14 18:03:05

2

你不需要任何的jQuery或JavaScript這一點。所有這些都可以在CSS中使用position: fixed來實現。

變更側欄選擇以下

#sidebar { 
    width: 130px; 
    height: auto; 
    overflow: hidden; 
    background: #ffffff; 
    margin: 0 auto; 
    clear: right; 
    padding: 8px; 
    background: #e5e5e5; 
    border: 2px dashed red; 
    position: fixed; 
    right: 35px; 
} 
3

我已經更新了的jsfiddle http://jsfiddle.net/7ey9g/76/我的解決方案。

當側窗欄大於側欄時,側欄應保留在頂部,並在側欄較大時將側欄固定到底部。