$(window).resizeと$( "#foo")。scrollで同じ関数をトリガーしたい。
#stick
の上部に固執する必要があり#foo
ます。問題は、#stick
スクロール時やウィンドウのサイズ変更時に、の位置が少しジャンプすることです。何か助けはありますか?
$(window).resizeと$( "#foo")。scrollで同じ関数をトリガーしたい。
#stick
の上部に固執する必要があり#foo
ます。問題は、#stick
スクロール時やウィンドウのサイズ変更時に、の位置が少しジャンプすることです。何か助けはありますか?
最初に、さらに2つのコンテナを追加します-.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');
}