2012-06-08 123 views
0

想要在$(window).resize和$(「#foo」)。scroll上觸發相同的函數。

http://jsfiddle.net/ySukf/1/

需要#stick堅持的#foo頂部。問題在於,滾動時以及調整窗口大小時,#stick的位置會有點跳動。任何幫助?

+0

我不太明白你的'#DIV anchor'做什麼... – Eric

+0

@Eric的'#anchor當'#stick'被'position:fixed'從文本流中取出時''div有壓低內容的數量(等於'#stick'的高度)' – asymptote

+0

啊,我現在明白了。 – Eric

回答

2

Here's a solution

首先,我們增加兩個容器 - 一個.content DIV中#foo.inner DIV中#stick

<div id="foo"> 
    <div class="content"> 
     <p>Lorem ipsum dolor sit amet.</p> 
     <div id="stick"> 
      <div class="inner">stick</div> 
     </div> 
     <p>...</p> 
    </div> 
</div>​ 

注意#anchor走了。

的容器中的CSS被一分爲二:

#foo { 
    position: relative; 
    margin: 50px auto; 
    width: 200px; 
    height: 200px; 
} 
#foo .content { 
    width: inherit; 
    height: inherit; 
    overflow: auto; 
} 

而且我們採用以下的#stick。內框從外部繼承它的大小。

#stick { 
    width: 100px; 
    height: 50px; 
} 
#stick .inner { 
    width: inherit; 
    height: inherit; 
    background: pink; 
} 
#stick.stuck .inner { 
    position: absolute; 
    top: 0; 
} 

幾乎一切都需要在CSS護理 - JavaScript是:

$(document).ready(function() { 
    $("#foo .content").scroll(stickyTop); 
    $(window).resize(stickyTop); 
}); 

function stickyTop() { 
    //position is now relative to #foo 
    if ($("#stick").position().top < 0) 
     $("#stick").addClass('stuck'); 
    else 
     $('#stick').removeClass('stuck'); 
}​ 
+0

工程就像一個魅力。謝謝@Eric。 – asymptote

+0

順便說一句,這是我所需要的:http://dl.dropbox.com/u/1435947/so/i/index.html – asymptote

+0

不錯,這也是我的最終解決方案,但這看起來更乾淨:) –

相關問題