2016-10-07 7 views
5

私はscrollTopメソッドを使って無限のスクロールを実装しています(jQueryプラグインを提案しないでください、私はそれらが存在することを知りません)。このバイオリンを考えるjQueryのscrollTop値は何を意味しますか?

https://jsfiddle.net/ve8s5fdx/

<div id="outter"> 
    <div class="inner"></div> 
    <div class="inner"></div> 
</div> 
<div id="scroll"></div> 
#outter { 
    height: 100px; 
    width: 100%; 
    overflow-y:auto; 
} 

.inner { 
    height: 150px; 
    width: 50%; 
    border: dashed black 2px; 
    background-color: grey; 
} 

それは、スクロールバーが要素の最上部にあるときに値が0であるという意味になりますが、なぜ「208」、それは一番下にありますか? #outter divは100pxと高く、そのコンテンツは300px以上です。

+7

'scrollTop'は、ウィンドウがドキュメントの上部からスクロールダウンされるピクセル数です –

+1

なぜ、それが底部にあるときに> 300pxにならないのですか? 300pxを超えるコンテンツ全体をスクロールしましたか?それは私が理解していない点です –

+3

それはあなたの 'ウィンドウ'の高さによって決まります。ウィンドウの高さが '300px'でドキュメントが' 400px'の場合、scrollTopの最大値は '100'です。 –

答えて

1

@ Rory McCrossanが言ったこと。 100ピクセルをスクロールすると、.scrollTopに100が表示されます。 scrollTopは、ウィンドウと要素の間のスペースを測定します。それで、あなたの要素がどれほど高いかは問題ではありません。

.innerにはCSSルールbox-sizing: border-box;がありません。ボーダーはdiv外に追加され、2pxの幅になります。あなたの場合、.innerの要素はいずれも高さが154pxであることを意味します。あなたはそれらの2つを持っているので、.outerの内容は308pxです。

.outer-elementは100ピクセル高いので、100ピクセルは常に表示されます。したがって、ウィンドウが一番下までスクロールされると、scrollTopは308px - 100px = 208pxを表示します。

.outerを高さ50pxに変更した場合、スクロールトップは下にスクロールすると258pxと表示されます。

1

$.scrollTop

垂直スクロール位置は がスクロール領域の上視界から隠されている画素の数と同じです。スクロールバーが非常に上部に ある、または要素がスクロール可能でない場合は、この数は あなたのフィドルの検査0

になる場合、あなたは2つの.inner sが308の組み合わせの高さを持っていることがわかりますpx。あなたの外側(スクロール)のdivは100pxの高さです。

だからあなた.scrollTop()total inner height - visible height、または208ピクセルであるスクロール可能な領域の上に視界から隠されているピクセルの数。

関連する問題