2

これはかなり初歩的なようですが、ユーザーがWebページの一番下までスクロールするとスライド&フェードインし、ユーザーが上にスクロールするとスライド&フェードアウトする固定位置フッターdivを取得しようとしています。Stack Overflowを検索しましたが、他の人が解決策を提案しましたが、私のコードではdivがスライドしてフェードインするだけです。ユーザーが上にスクロールしたときにdivをスライドしてフェードアウトさせることができません。

また、このdivは、スクロールを開始した直後にスライドしてフェードインします。固定位置のdivがスライドしてフェードインする前に、ページの下部(またはページの下部に配置できる非表示のdiv)に到達するまで待つ必要があります。

助言がありますか?

jQuery:

$(function() {
    $('#footer').css({opacity: 0, bottom: '-100px'});
    $(window).scroll(function() {
        if( $(window).scrollTop + $(window).height() > $(document).height() ) {
            $('#footer').animate({opacity: 1, bottom: '0px'});
        }
    });
});

HTML:

<div id="footer">
    <!-- footer content here -->
</div>

CSS:

#footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    height: 100px;
    z-index: 26;
}

助けてくれてありがとう!

4

1 に答える 1

6

こういうことをやってみようと思います。

http://jsfiddle.net/lollero/SFPpf/3

http://jsfiddle.net/lollero/SFPpf/4-もう少し高度なバージョン。

JS:

var footer = $('#footer'),
    extra = 10; // In case you want to trigger it a bit sooner than exactly at the bottom.

footer.css({ opacity: '0', display: 'block' });

$(window).scroll(function() {

   var scrolledLength = ( $(window).height() + extra ) + $(window).scrollTop(),
       documentHeight = $(document).height();


    console.log( 'Scroll length: ' + scrolledLength + ' Document height: ' + documentHeight )


   if( scrolledLength >= documentHeight ) {

       footer
          .addClass('bottom')
          .stop().animate({ bottom: '0', opacity: '1' }, 300);

   }
   else if ( scrolledLength <= documentHeight && footer.hasClass('bottom') ) {           
        footer
           .removeClass('bottom')
           .stop().animate({ bottom: '-100', opacity: '0' }, 300);

   }
});

HTML:

<div id="footer">
    <p>Lorem ipsum dolor sit amet</p>
</div> 

CSS:

#footer {
    display: none;
    position: fixed;
    left: 0px;
    right: 0px;
    bottom: -100px;
    height: 100px;
    width: 100%;
    background: #222;
    color: #fff;
    text-align: center;
}

#footer p {
    padding: 10px;
}
于 2012-07-10T13:09:40.717 に答える