jQueryはdivがスクロールバーに従って一定の位置にスクロールしたら停止すると判断します。


実現コード:

<script type="text/javascript">
var rollSet = $('#widget');
    var offset = rollSet.offset();
    var fwidth = $("#footer").height();
    $(window).scroll(function() {
        var scrollTop = $(window).scrollTop();
        var scrollBtm = $(document).height() - $(window).scrollTop() - $("#widget").height();
        if (offset.top < scrollTop) {
            if (scrollBtm > fwidth) {
                rollSet.removeClass('absolute').addClass('fixed')
            } else {
                rollSet.removeClass('fixed').addClass('absolute')
            }
        } else {
            rollSet.removeClass('fixed')
        }
    })
</script>
方法説明:ページ全体の高さからスクロールされた高さを差し引いて、IDがwidgetである層の高さを引いたら、つまり、層の底から底までの高さに等しいです。底からの高さが特定の位置から底までの高さ以下の場合は、スタイルfixedを外し、その層に絶対位置を追加します。CSSで親層にposition:relativeを追加します。