0

私はあなたに質問する前に、しばらく試してみました。

特定の div (実際にはフッター) で停止したいフローティング div があります。フッターの高さのサイズを知っています。

Web や Stackoverflow で見つかった多くのコードを試してみましたが、成功しませんでした。この質問は、私が知っている何度も尋ねられました。

ここにページがあります: http://www.autohd.fr/A/

フッターに到達したときに停止する必要があるフローティング div は、右側の "RÉAGIR" にあります。

$(function() {

var $sidebar = $("#shout"),
    $window = $(window),
    offset = $sidebar.offset(),
    topPadding = 20;

$window.scroll(function() {
    if ($window.scrollTop() > offset.top) {
        $sidebar.stop().animate({
            marginTop: $window.scrollTop() - offset.top + topPadding
        });
    } else {
        $sidebar.stop().animate({
            marginTop: 0
        });
    }
});
});

あなたの時間と助けに感謝します, アレックス

4

1 に答える 1

1

そのdivの下部が通過しないことを確認して $("#footer").offset().topください。次のように、現在の div の下部を計算できます$sidebar.offset().top + $sidebar.height()。例えば:

$(function() {
   var $sidebar = $("#shout"),
    $window = $(window),
    offset = $sidebar.offset(),
    topPadding = 20,
    footerTop = $("#footer").offset().top;  // <-- Get the footer's top

   $window.scroll(function() {
    if ($window.scrollTop() > offset.top) {
        $sidebar.stop().animate({
            marginTop: Math.min(
                          $window.scrollTop() - offset.top + topPadding,
                          footerTop - $sidebar.height()
                       )
        });
    } else {  
        $sidebar.stop().animate({
            marginTop: 0
        });
    }
   });
});
于 2012-03-12T20:08:12.513 に答える