jQueryの - 「scrollstop」のスクロール/フェードインフェードアウトで

StackOverflow https://stackoverflow.com/questions/1654792

  •  11-09-2019
  •  | 
  •  

質問

私は、スクロールイベントによって呼び出されますdivの位置決め作業を持っています。何がスクロールイベントがちらつきのdivになり倍の束を解雇されることを、それを起こります。私の計画は、divのことをフェードアウト、それ以上スクロールイベントが発生していないとすぐに戻ってフェードインすることです。どのように私はスクロールが終わったことを確認することができますか? < - >スクロールするが、私は期待して実際には何も働いていない私は、タイムアウトの組み合わせを考えました。ここで私は、これまでに得たものです。

$(document).ready(function(){

    //var animActive = false;

    $(window).scroll(function() {

        /*
        if (animActive == false){
            animActive = true;
            $('.mceExternalToolbar').fadeOut(100, function () {
                $('.mceExternalToolbar').fadeIn(3000, function () {
                    animActive = false;
                    console.log("NOW");
                });
            });
        }
        */

        topParentx = $('#tinyMCEwrapper').position().top;
        if ($(this).scrollTop() >= topParentx){
            $('.mceExternalToolbar').css('top', ($(this).scrollTop()-topParentx) + "px");
        } else {
            $('.mceExternalToolbar').css('top', "0px");
        };
    });

});

あなたが見ることができるように私はそこに私の最後の試みの1を残したが、期待通りにフェードイン機能のコールバックは動作しませんでした。

役に立ちましたか?

解決

あなたが本当にそれからアニメーションをトリガーすることはできませんので、

は、残念ながらスクロール停止の概念はありません。何より良い仕事もする代わりに、あなたのdiv要素の「上部」プロパティをアニメーション化することであるので、それは代わりに、ちらつきの新しい位置だし、それがスムーズにスライドしている。

        topParentx = $('#tinyMCEwrapper').position().top;
        var topTarget = "0px";
        if ($(this).scrollTop() >= topParentx){
            topTarget = ($(this).scrollTop()-topParentx) + "px";
        }
        $('.mceExternalToolbar').stop().animate({top, topTarget}, 500);
scroll top